{{#operations}} #import "{{classname}}.h" #import "SWGFile.h" #import "SWGQueryParamCollection.h" #import "SWGApiClient.h" {{#imports}}#import "{{import}}.h" {{/imports}} {{newline}} @interface {{classname}} () @property (readwrite, nonatomic, strong) NSMutableDictionary *defaultHeaders; @end @implementation {{classname}} static NSString * basePath = @"{{basePath}}"; +({{classname}}*) apiWithHeader:(NSString*)headerValue key:(NSString*)key { static {{classname}}* singletonAPI = nil; if (singletonAPI == nil) { singletonAPI = [[{{classname}} alloc] init]; [singletonAPI addHeader:headerValue forKey:key]; } return singletonAPI; } +(void) setBasePath:(NSString*)path { basePath = path; } +(NSString*) getBasePath { return basePath; } -(SWGApiClient*) apiClient { return [SWGApiClient sharedClientFromPool:basePath]; } -(void) addHeader:(NSString*)value forKey:(NSString*)key { [self.defaultHeaders setValue:value forKey:key]; } -(id) init { self = [super init]; self.defaultHeaders = [NSMutableDictionary dictionary]; [self apiClient]; return self; } -(void) setHeaderValue:(NSString*) value forKey:(NSString*)key { [self.defaultHeaders setValue:value forKey:key]; } -(unsigned long) requestQueueSize { return [SWGApiClient requestQueueSize]; } {{#operation}} /*! * {{{summary}}} * {{{notes}}} {{#allParams}} * \param {{paramName}} {{{description}}} {{/allParams}} * \returns {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}} */ -(NSNumber*) {{nickname}}WithCompletionBlock{{^allParams}}: {{/allParams}}{{#allParams}}{{#secondaryParam}} {{paramName}}{{/secondaryParam}}: ({{{dataType}}}) {{paramName}} {{/allParams}} {{#returnBaseType}}{{#hasParams}}completionHandler: {{/hasParams}}(void (^)({{{returnType}}} output, NSError* error))completionBlock{{/returnBaseType}} {{^returnBaseType}}{{#hasParams}}completionHandler: {{/hasParams}}(void (^)(NSError* error))completionBlock{{/returnBaseType}} { {{#allParams}}{{#required}} // verify the required parameter '{{paramName}}' is set NSAssert({{paramName}} != nil, @"Missing the required parameter `{{paramName}}` when calling {{nickname}}"); {{/required}}{{/allParams}} NSMutableString* requestUrl = [NSMutableString stringWithFormat:@"%@{{path}}", basePath]; // remove format in URL if needed if ([requestUrl rangeOfString:@".{format}"].location != NSNotFound) [requestUrl replaceCharactersInRange: [requestUrl rangeOfString:@".{format}"] withString:@".json"]; {{#pathParams}}[requestUrl replaceCharactersInRange: [requestUrl rangeOfString:[NSString stringWithFormat:@"%@%@%@", @"{", @"{{baseName}}", @"}"]] withString: [SWGApiClient escape:{{paramName}}]]; {{/pathParams}} NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; {{#queryParams}}if({{paramName}} != nil) { {{#collectionFormat}} queryParams[@"{{baseName}}"] = [[SWGQueryParamCollection alloc] initWithValuesAndFormat: {{baseName}} format: @"{{collectionFormat}}"]; {{/collectionFormat}} {{^collectionFormat}}queryParams[@"{{baseName}}"] = {{paramName}};{{/collectionFormat}} } {{/queryParams}} NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; {{#headerParams}}if({{paramName}} != nil) headerParams[@"{{baseName}}"] = {{paramName}}; {{/headerParams}} // HTTP header `Accept` NSArray *headerAccept = @[{{#produces}}@"{{mediaType}}"{{#hasMore}}, {{/hasMore}}{{/produces}}]; headerParams[@"Accept"] = [SWGApiClient selectHeaderAccept:headerAccept]; NSString *responseContentType = [headerParams[@"Accept"] componentsSeparatedByString:@", "][0]; // HTTP header `Content-Type` NSArray *headerContentType = @[{{#consumes}}@"{{mediaType}}"{{#hasMore}}, {{/hasMore}}{{/consumes}}]; headerParams[@"Content-Type"] = [SWGApiClient selectHeaderContentType:headerContentType]; NSString *requestContentType = headerParams[@"Content-Type"]; id bodyDictionary = nil; {{#bodyParam}} id __body = {{paramName}}; if(__body != nil && [__body isKindOfClass:[NSArray class]]){ NSMutableArray * objs = [[NSMutableArray alloc] init]; for (id dict in (NSArray*)__body) { if([dict respondsToSelector:@selector(toDictionary)]) { [objs addObject:[(SWGObject*)dict toDictionary]]; } else{ [objs addObject:dict]; } } bodyDictionary = objs; } else if([__body respondsToSelector:@selector(toDictionary)]) { bodyDictionary = [(SWGObject*)__body toDictionary]; } else if([__body isKindOfClass:[NSString class]]) { // convert it to a dictionary NSError * error; NSString * str = (NSString*)__body; NSDictionary *JSON = [NSJSONSerialization JSONObjectWithData: [str dataUsingEncoding: NSUTF8StringEncoding] options: NSJSONReadingMutableContainers error: &error]; bodyDictionary = JSON; } {{/bodyParam}} {{^bodyParam}} NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; {{#formParams}} {{#notFile}} formParams[@"{{paramName}}"] = {{paramName}}; {{/notFile}}{{#isFile}} requestContentType = @"multipart/form-data"; if(bodyDictionary == nil) { bodyDictionary = [[NSMutableArray alloc] init]; } if({{paramName}} != nil) { [bodyDictionary addObject:{{paramName}}]; {{paramName}}.paramName = @"{{baseName}}"; } {{/isFile}} if(bodyDictionary == nil) { bodyDictionary = [[NSMutableArray alloc] init]; } [bodyDictionary addObject:formParams]; {{/formParams}} {{/bodyParam}} {{#requiredParamCount}} {{#requiredParams}} if({{paramName}} == nil) { // error } {{/requiredParams}} {{/requiredParamCount}} SWGApiClient* client = [SWGApiClient sharedClientFromPool:basePath]; {{#returnContainer}} // response is in a container {{>apiBodyResponseWithContainer}}{{/returnContainer}} {{#returnSimpleType}} // non container response {{#returnTypeIsPrimitive}} // primitive response {{>apiPrimitiveResponse}}{{/returnTypeIsPrimitive}} {{#returnBaseType}} // complex response {{>apiNonPrimitiveResponse}}{{/returnBaseType}} {{/returnSimpleType}} {{^returnSimpleType}}{{^returnContainer}} // it's void {{>voidResponse}} {{/returnContainer}}{{/returnSimpleType}} } {{/operation}} {{newline}} {{/operations}} @end