From a02d4e989ec1ecf82da7044375b4010f1b572883 Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Sun, 5 Mar 2017 00:11:32 -0800 Subject: Try to abstract CydiaURLProtocol as CyteKit class. --- MobileCydia.mm | 56 ++++++-------------------------------------------------- 1 file changed, 6 insertions(+), 50 deletions(-) (limited to 'MobileCydia.mm') diff --git a/MobileCydia.mm b/MobileCydia.mm index 0d0ac83..dce9dec 100644 --- a/MobileCydia.mm +++ b/MobileCydia.mm @@ -6631,61 +6631,18 @@ static void HomeControllerReachabilityCallback(SCNetworkReachabilityRef reachabi /* }}} */ /* Cydia:// Protocol {{{ */ -@interface CydiaURLProtocol : NSURLProtocol { +@interface CydiaURLProtocol : CyteURLProtocol { } @end @implementation CydiaURLProtocol -+ (BOOL) canInitWithRequest:(NSURLRequest *)request { - NSURL *url([request URL]); - if (url == nil) - return NO; - - NSString *scheme([[url scheme] lowercaseString]); - if (scheme != nil && [scheme isEqualToString:@"cydia"]) - return YES; - if ([[url absoluteString] hasPrefix:@"about:cydia-"]) - return YES; - - return NO; -} - -+ (NSURLRequest *) canonicalRequestForRequest:(NSURLRequest *)request { - return request; ++ (NSString *) scheme { + return @"cydia"; } -- (void) _returnPNGWithImage:(UIImage *)icon forRequest:(NSURLRequest *)request { - id client([self client]); - if (icon == nil) - [client URLProtocol:self didFailWithError:[NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorFileDoesNotExist userInfo:nil]]; - else { - NSData *data(UIImagePNGRepresentation(icon)); - - NSURLResponse *response([[[NSURLResponse alloc] initWithURL:[request URL] MIMEType:@"image/png" expectedContentLength:-1 textEncodingName:nil] autorelease]); - [client URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageNotAllowed]; - [client URLProtocol:self didLoadData:data]; - [client URLProtocolDidFinishLoading:self]; - } -} - -- (void) startLoading { - id client([self client]); - NSURLRequest *request([self request]); - - NSURL *url([request URL]); - NSString *href([url absoluteString]); - NSString *scheme([[url scheme] lowercaseString]); - - NSString *path; - - if ([scheme isEqualToString:@"cydia"]) - path = [href substringFromIndex:8]; - else if ([scheme isEqualToString:@"about"]) - path = [href substringFromIndex:12]; - else _assert(false); - +- (bool) loadForPath:(NSString *)path ofRequest:(NSURLRequest *)request { NSRange slash([path rangeOfString:@"/"]); NSString *command; @@ -6745,11 +6702,10 @@ static void HomeControllerReachabilityCallback(SCNetworkReachabilityRef reachabi icon = [UIImage imageNamed:@"unknown.png"]; [self _returnPNGWithImage:icon forRequest:request]; } else fail: { - [client URLProtocol:self didFailWithError:[NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorResourceUnavailable userInfo:nil]]; + return [super loadForPath:path ofRequest:request]; } -} -- (void) stopLoading { + return true; } @end -- cgit v1.2.3