Commit 924c112e authored by jz's avatar jz

update GMRouter

parent 09124efa
...@@ -133,47 +133,58 @@ static NSMutableDictionary *routeMap = nil; ...@@ -133,47 +133,58 @@ static NSMutableDictionary *routeMap = nil;
} }
NSString *host = url.host; NSString *host = url.host;
NSString *targetName = [routeMap objectForKey:host]; NSString *targetName = [routeMap objectForKey:host];
NSDictionary *params = [self getParams:encodeUrlScheme withHost:host];
host = [self getHostWithEncodeUrlScheme:encodeUrlScheme host:host];
return [self performTarget:targetName action:host params:params shouldCacheTarget:NO];
}
- (NSDictionary *)getParams:(NSString *)encodeUrlScheme withHost:(NSString *)host {
NSDictionary *params; NSDictionary *params;
NSArray *array = [encodeUrlScheme componentsSeparatedByString:@"url="]; NSArray *array = [encodeUrlScheme componentsSeparatedByString:@"url="];
if (([host isEqualToString:@"third_webview"] || [host isEqualToString:@"common_webview"]) && array.count > 1) { if (([host isEqualToString:@"third_webview"] || [host isEqualToString:@"common_webview"]) && array.count > 1) {
NSString *value = array[1]; NSString *value = array[1];
while ([value rangeOfString:@"%"].length != 0) { //拦截所有的即将调转的url(value),如果不在白名单之中,让其使用GMThirdWebViewController加载.
NSString *valueHost = [[NSURL URLWithString:value] host];
if ([value rangeOfString:@"%"].length != 0) {
value = [self URLDecodedString:value]; value = [self URLDecodedString:value];
} }
params = @{@"url":value}; params = @{@"url":value};
//拦截所有的即将调转的url(value),如果不在白名单之中,让其使用GMThirdWebViewController加载.
NSString *valueHost = [[NSURL URLWithString:value] host];
// if ([GMServerDomains allowURLHost:valueHost] == NO) {
//#if defined DEBUG
// UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"webView需添加白名单" message:value delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
// [alertView show];
//#endif
//
// host = @"third_webview";
// }
} else { } else {
params = [self urlQueryToDictionary:encodeUrlScheme]; params = [self urlQueryToDictionary:encodeUrlScheme];
} }
return params;
}
// NSDictionary *params = [self urlQueryToDictionary:encodeUrlScheme]; - (NSString *)getHostWithEncodeUrlScheme:(NSString *)encodeUrlScheme host:(NSString *)host {
NSArray *array = [encodeUrlScheme componentsSeparatedByString:@"url="];
return [self performTarget:targetName action:host params:params shouldCacheTarget:NO]; if (([host isEqualToString:@"third_webview"] || [host isEqualToString:@"common_webview"]) && array.count > 1) {
NSString *value = array[1];
//拦截所有的即将调转的url(value),如果不在白名单之中,让其使用GMThirdWebViewController加载.
NSString *valueHost = [[NSURL URLWithString:value] host];
Class cls = NSClassFromString(@"GMServerDomains");
if ([cls respondsToSelector:@selector(allowURLHost:)]) {
BOOL isAllow = [cls performSelector:@selector(allowURLHost:) withObject:valueHost];
if (!isAllow) {
host = @"third_webview";
}
}
}
return host;
} }
- (id)pushScheme:(NSString *)urlScheme params:(NSDictionary *)params { - (id)pushScheme:(NSString *)urlScheme params:(NSDictionary *)params {
NSString *encodeUrlScheme = [self URLDecodedString:urlScheme]; NSString *encodeUrlScheme = [self URLEncodeString:urlScheme];
NSURL *url = [NSURL URLWithString:encodeUrlScheme]; NSURL *url = [NSURL URLWithString:encodeUrlScheme];
if (!url) { if (!url) {
// debugLog(@"协议出错了!");
} }
NSString *host = url.host; NSString *host = url.host;
NSString *targetName = [routeMap objectForKey:host]; NSString *targetName = [routeMap objectForKey:host];
NSDictionary *paramsDict = [self urlQueryToDictionary:encodeUrlScheme]; NSDictionary *paramsDict = [self getParams:encodeUrlScheme withHost:host];
host = [self getHostWithEncodeUrlScheme:encodeUrlScheme host:host];
return [self performTarget:targetName action:host params:paramsDict shouldCacheTarget:NO]; return [self performTarget:targetName action:host params:paramsDict shouldCacheTarget:NO];
} }
#pragma mark - string to dict #pragma mark - string to dict
- (NSDictionary*)urlQueryToDictionary:(NSString *)urlScheme { - (NSDictionary*)urlQueryToDictionary:(NSString *)urlScheme {
NSURL* url1 = [NSURL URLWithString:urlScheme]; NSURL* url1 = [NSURL URLWithString:urlScheme];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment