summaryrefslogtreecommitdiff
path: root/MobileCydia.mm
diff options
context:
space:
mode:
authorJay Freeman (saurik) <saurik@saurik.com>2017-03-05 00:11:32 -0800
committerJay Freeman (saurik) <saurik@saurik.com>2017-03-05 00:11:32 -0800
commita02d4e989ec1ecf82da7044375b4010f1b572883 (patch)
treed98f45b8dc98dc823b3f4b8d9307771cbd6f93a3 /MobileCydia.mm
parentc72556a6183b20b8061a23292f6846f06d4f1614 (diff)
Try to abstract CydiaURLProtocol as CyteKit class.
Diffstat (limited to 'MobileCydia.mm')
-rw-r--r--MobileCydia.mm56
1 files changed, 6 insertions, 50 deletions
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<NSURLProtocolClient> 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<NSURLProtocolClient> 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