From: Jay Freeman (saurik) Date: Mon, 28 Feb 2011 15:22:26 +0000 (-0800) Subject: Factor out diversion logic. X-Git-Tag: v1.1.0%b1~127 X-Git-Url: https://git.saurik.com/cydia.git/commitdiff_plain/7256476b3a9d920ad5ac69cf5a824f810103cb34?ds=inline Factor out diversion logic. --- diff --git a/MobileCydia.mm b/MobileCydia.mm index 6c6719ad..3e0d16a8 100644 --- a/MobileCydia.mm +++ b/MobileCydia.mm @@ -4067,6 +4067,8 @@ static NSString *Warning_; @end /* }}} */ +static NSMutableSet *Diversions_; + @interface Diversion : NSObject { Pcre pattern_; _H key_; @@ -4089,6 +4091,19 @@ static NSString *Warning_; return !pattern_(url) ? nil : pattern_->*format_; } ++ (NSURL *) divertURL:(NSURL *)url { + divert: + NSString *href([url absoluteString]); + + for (Diversion *diversion in Diversions_) + if (NSString *diverted = [diversion divert:href]) { + url = [NSURL URLWithString:diverted]; + goto divert; + } + + return url; +} + - (NSString *) key { return key_; } @@ -4120,8 +4135,6 @@ static NSString *Warning_; @end -static NSMutableSet *Diversions_; - /* Web Scripting {{{ */ @implementation CydiaObject @@ -4699,15 +4712,7 @@ static NSMutableSet *Diversions_; - (NSURLRequest *) webView:(WebView *)view resource:(id)resource willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response fromDataSource:(WebDataSource *)source { NSMutableURLRequest *copy([[super webView:view resource:resource willSendRequest:request redirectResponse:response fromDataSource:source] mutableCopy]); - divert: - NSURL *url([copy URL]); - NSString *href([url absoluteString]); - - for (Diversion *diversion in Diversions_) - if (NSString *diverted = [diversion divert:href]) { - [copy setURL:[NSURL URLWithString:diverted]]; - goto divert; - } + [copy setURL:[Diversion divertURL:[copy URL]]]; if (System_ != NULL) [copy setValue:System_ forHTTPHeaderField:@"X-System"];