// // GiGaBaseAPiRequest.m // GIGA // // Created by lianxiang on 2018/8/29. // Copyright © 2018年 com.giga.ios. All rights reserved. // #import "GiGaBaseAPiRequest.h" #import "GiGaServerConfig.h" #import #import "GiGaNetManager.h" @implementation GiGaBaseAPiRequest - (NSString *)serviceUrl { return [GiGaServerConfig getMainUrl]; } - (id)init { self = [super init]; if (self) { _needToken = NO; self.requestMethod = RequestGetMethod; } return self; } +(instancetype)initWithRequestPath:(NSString *)path method:(RequestMethod)method parms:(NSDictionary *)parms { NSString *absoluteURLString = [NSString stringWithFormat:@"%@%@", [GiGaServerConfig getMainUrl], path]; return [self initWithRequestAbsoluteURLString:absoluteURLString method:method parms:parms]; } + (instancetype)initWithRequestAbsoluteURLString:(NSString *)absoluteString method:(RequestMethod)method parms:(NSDictionary *)parms { GiGaBaseAPiRequest *request = [[self alloc] init]; request.fullUrl = absoluteString; request.requestMethod = method; [request buildRequestDictWithDepedency:parms]; return request; } + (NSArray *)mergeOriginalArray:(NSArray *)orgArr withOtherArray:(NSArray *)otherArr; { if (otherArr.count == 0) { return orgArr; } NSMutableArray *array = [NSMutableArray arrayWithArray:orgArr]; for (int i = 0; i < otherArr.count; i++) { id object = [otherArr objectAtIndex:i]; if (!orgArr || [orgArr indexOfObject:object] == NSNotFound) { [array addObject:object]; } } return array; } - (NSMutableDictionary *)buildRequestDict { if (!_params) { NSMutableDictionary *dict = [NSMutableDictionary dictionary]; _params = dict; } return _params; } - (NSMutableDictionary *)buildRequestDictWithDepedency:(NSDictionary *)dict { self.params = dict.mutableCopy; return self.params; } - (void)requstDataWithResult:(GiGaRequestResultBlock)result { self.blockresult = result; [self checkNetwork]; if (self.statu == NetStatusUnKown) { return; } NSLog(@" %@", _fullUrl); // NSMutableDictionary *postDict = [self buildRequestDict]; [GiGaNetManager requestMethod:self.requestMethod Url:self.fullUrl params:self.params responseBlock:^(NSDictionary *responseDict, NSDictionary *responseHeaderFields, NSError *error) { [self analyseResponseInfo:responseDict headerFileds:responseHeaderFields error:error]; }]; } - (void)analyseResponseInfo:(NSDictionary *)responseData error:(NSError *)error { [self analyseResponseInfo:responseData headerFileds:nil error:error]; } - (void)analyseResponseInfo:(NSDictionary *)responseData headerFileds:(NSDictionary *)headerFields error:(NSError *)error { self.responseHeaderFields = headerFields; NSString *token = headerFields[@"token"]; if (token && token.length > 0) { //更新token //[FFBMSConfig shareInstance].token = token; } GILog(@"headerFileds%@",headerFields); if (error) { GILog(@"err:%@",error.localizedDescription); [[UIApplication sharedApplication].keyWindow makeToast:@"请求错误" duration:1 position:CSToastPositionCenter]; self.blockresult(nil); return; } self.resultDict =responseData; GiGaAPIResult *res = [[GiGaAPIResult alloc] initWithDictionary:responseData]; if (self.blockresult) { self.blockresult(res); } } - (void)checkNetwork{ AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager]; [manager startMonitoring]; [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { switch (status) { case AFNetworkReachabilityStatusReachableViaWWAN: { GILog(@"2/3/4G"); self.statu = NetStatusWWAN; } break; case AFNetworkReachabilityStatusReachableViaWiFi: { GILog(@"WiFi"); self.statu = NetStatusWifi; } break; default: [[UIApplication sharedApplication].keyWindow makeToast:@"网络异常" duration:1.0 position:CSToastPositionCenter]; self.statu = NetStatusUnKown; GILog(@"Unkown Net"); break; } }]; } @end