#import "SWGFakeApi.h" #import "SWGQueryParamCollection.h" @interface SWGFakeApi () @property (nonatomic, strong) NSMutableDictionary *defaultHeaders; @end @implementation SWGFakeApi NSString* kSWGFakeApiErrorDomain = @"SWGFakeApiErrorDomain"; NSInteger kSWGFakeApiMissingParamErrorCode = 234513; @synthesize apiClient = _apiClient; #pragma mark - Initialize methods - (instancetype) init { self = [super init]; if (self) { SWGConfiguration *config = [SWGConfiguration sharedConfig]; if (config.apiClient == nil) { config.apiClient = [[SWGApiClient alloc] init]; } _apiClient = config.apiClient; _defaultHeaders = [NSMutableDictionary dictionary]; } return self; } - (id) initWithApiClient:(SWGApiClient *)apiClient { self = [super init]; if (self) { _apiClient = apiClient; _defaultHeaders = [NSMutableDictionary dictionary]; } return self; } #pragma mark - + (instancetype)sharedAPI { static SWGFakeApi *sharedAPI; static dispatch_once_t once; dispatch_once(&once, ^{ sharedAPI = [[self alloc] init]; }); return sharedAPI; } -(NSString*) defaultHeaderForKey:(NSString*)key { return self.defaultHeaders[key]; } -(void) addHeader:(NSString*)value forKey:(NSString*)key { [self setDefaultHeaderValue:value forKey:key]; } -(void) setDefaultHeaderValue:(NSString*) value forKey:(NSString*)key { [self.defaultHeaders setValue:value forKey:key]; } -(NSUInteger) requestQueueSize { return [SWGApiClient requestQueueSize]; } #pragma mark - Api Methods /// /// To test code injection *_/ ' \" =end \\r\\n \\n \\r /// /// @param testCodeInjectEndRnNR To test code injection *_/ ' \" =end \\r\\n \\n \\r (optional) /// /// @returns void /// -(NSNumber*) testCodeInjectEndRnNRWithTestCodeInjectEndRnNR: (NSString*) testCodeInjectEndRnNR completionHandler: (void (^)(NSError* error)) handler { NSMutableString* resourcePath = [NSMutableString stringWithFormat:@"/fake"]; // remove format in URL if needed [resourcePath replaceOccurrencesOfString:@".{format}" withString:@".json" options:0 range:NSMakeRange(0,resourcePath.length)]; NSMutableDictionary *pathParams = [[NSMutableDictionary alloc] init]; NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.apiClient.configuration.defaultHeaders]; [headerParams addEntriesFromDictionary:self.defaultHeaders]; // HTTP header `Accept` NSString *acceptHeader = [self.apiClient.sanitizer selectHeaderAccept:@[@"application/json", @"*/ ' =end "]]; if(acceptHeader.length > 0) { headerParams[@"Accept"] = acceptHeader; } // response content type NSString *responseContentType = [[acceptHeader componentsSeparatedByString:@", "] firstObject] ?: @""; // request content type NSString *requestContentType = [self.apiClient.sanitizer selectHeaderContentType:@[@"application/json", @"*/ ' =end "]]; // Authentication setting NSArray *authSettings = @[]; id bodyParam = nil; NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init]; NSMutableDictionary *localVarFiles = [[NSMutableDictionary alloc] init]; if (testCodeInjectEndRnNR) { formParams[@"test code inject */ ' " =end \r\n \n \r"] = testCodeInjectEndRnNR; } return [self.apiClient requestWithPath: resourcePath method: @"PUT" pathParams: pathParams queryParams: queryParams formParams: formParams files: localVarFiles body: bodyParam headerParams: headerParams authSettings: authSettings requestContentType: requestContentType responseContentType: responseContentType responseType: nil completionBlock: ^(id data, NSError *error) { if(handler) { handler(error); } } ]; } @end