]> git.saurik.com Git - cydia.git/commitdiff
Factor out diversion logic.
authorJay Freeman (saurik) <saurik@saurik.com>
Mon, 28 Feb 2011 15:22:26 +0000 (07:22 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Mon, 7 Mar 2011 10:41:27 +0000 (02:41 -0800)
MobileCydia.mm

index 6c6719ad2ba52b3f14625ac1594ec1b4e31db662..3e0d16a8142453099f8554bf13eb2b8d386162ba 100644 (file)
@@ -4067,6 +4067,8 @@ static NSString *Warning_;
 @end
 /* }}} */
 
+static NSMutableSet *Diversions_;
+
 @interface Diversion : NSObject {
     Pcre pattern_;
     _H<NSString> 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"];