#import <Foundation/Foundation.h>
#import "YTKNetworkConfig.h"
#import "YTKBaseRequest.h"
@interface BaseUrlFilter : NSObject<YTKUrlFilterProtocol>
+ (BaseUrlFilter *)filterWithArguments:(NSDictionary *)arguments;
@end
#import "BaseUrlFilter.h"
#import "AFURLRequestSerialization.h"
@implementation BaseUrlFilter{
NSDictionary *_arguments;
}
+ (BaseUrlFilter *)filterWithArguments:(NSDictionary *)arguments {
if (arguments==nil) {
int time = (int)[[NSDate date] timeIntervalSince1970];//时间戳
NSString *sign = [[[NSString stringWithFormat:@"%@%d%@%@",KAppId,time,kAppToken,KAppSignKay] MD5Hash] lowercaseString];//sign值
return [[self alloc]initWithArguments:@{@"appID":KAppId,@"ts":[NSString stringWithFormat:@"%d",time],@"sign":sign}];
}
else{
return [[self alloc] initWithArguments:arguments];
}
}
- (id)initWithArguments:(NSDictionary *)arguments {
self = [super init];
if (self) {
_arguments = arguments;
}
return self;
}
- (NSString *)filterUrl:(NSString *)originUrl withRequest:(YTKBaseRequest *)request {
NSLog(@"_arguments:%@",request.requestArgument);
return [self urlStringWithOriginUrlString:originUrl appendParameters:_arguments];
}
- (NSString *)urlStringWithOriginUrlString:(NSString *)originUrlString appendParameters:(NSDictionary *)parameters {
NSString *filteredUrl = originUrlString;
NSString *paraUrlString = [self urlParametersStringFromParameters:parameters];
if (paraUrlString && paraUrlString.length > 0) {
if ([originUrlString rangeOfString:@"?"].location != NSNotFound) {
filteredUrl = [filteredUrl stringByAppendingString:paraUrlString];
} else {
filteredUrl = [filteredUrl stringByAppendingFormat:@"?%@", [paraUrlString substringFromIndex:1]];
}
return filteredUrl;
} else {
return originUrlString;
}
}
- (NSString *)urlParametersStringFromParameters:(NSDictionary *)parameters {
NSMutableString *urlParametersString = [[NSMutableString alloc] initWithString:@""];
if (parameters && parameters.count > 0) {
for (NSString *key in parameters) {
NSString *value = parameters[key];
value = [NSString stringWithFormat:@"%@",value];
value = [self urlEncode:value];
[urlParametersString appendFormat:@"&%@=%@", key, value];
}
}
return urlParametersString;
}
- (NSString*)urlEncode:(NSString*)str {
return AFPercentEscapedStringFromString(str);
}
@end