-
Notifications
You must be signed in to change notification settings - Fork 93
Expand file tree
/
Copy pathTWAdBlockAssetResourceLoaderDelegate.m
More file actions
35 lines (33 loc) · 1.74 KB
/
TWAdBlockAssetResourceLoaderDelegate.m
File metadata and controls
35 lines (33 loc) · 1.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#import "TWAdBlockAssetResourceLoaderDelegate.h"
extern NSUserDefaults *tweakDefaults;
@implementation TWAdBlockAssetResourceLoaderDelegate
- (BOOL)handleLoadingRequest:(AVAssetResourceLoadingRequest *)loadingRequest {
NSURL *URL = loadingRequest.request.URL;
if (![URL.scheme isEqualToString:@"twab"]) return NO;
AVAssetResourceLoadingDataRequest *dataRequest = loadingRequest.dataRequest;
NSURLComponents *components = [NSURLComponents componentsWithURL:URL resolvingAgainstBaseURL:YES];
components.scheme = @"https";
NSMutableURLRequest *request = loadingRequest.request.mutableCopy;
request.URL = components.URL;
NSString *proxy = [tweakDefaults boolForKey:@"TWAdBlockCustomProxyEnabled"]
? [tweakDefaults stringForKey:@"TWAdBlockProxy"]
: PROXY_ADDR;
NSURLSession *session = [[NSURLSession alloc] twab_proxySessionWithAddress:proxy];
[[session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) return [loadingRequest finishLoadingWithError:error];
loadingRequest.contentInformationRequest.contentType = AVFileTypeMPEG4;
[dataRequest respondWithData:data];
[loadingRequest finishLoading];
}] resume];
return YES;
}
- (BOOL)resourceLoader:(AVAssetResourceLoader *)resourceLoader
shouldWaitForLoadingOfRequestedResource:(AVAssetResourceLoadingRequest *)loadingRequest {
return [self handleLoadingRequest:loadingRequest];
}
- (BOOL)resourceLoader:(AVAssetResourceLoader *)resourceLoader
shouldWaitForRenewalOfRequestedResource:(AVAssetResourceRenewalRequest *)renewalRequest {
return [self handleLoadingRequest:renewalRequest];
}
@end