From 5c8516ce24c09bcd5b94506228296320c369b6da Mon Sep 17 00:00:00 2001 From: Mateusz Mackowiak Date: Mon, 16 May 2016 07:30:25 +0200 Subject: [PATCH 1/4] [Objc] - Common protocol for Api and added NSParameterAssert if missing required param + calling completion block with error rather than throwing an exception --- .../codegen/languages/ObjcClientCodegen.java | 5 +- .../resources/objc/ApiClient-body.mustache | 2 +- .../resources/objc/ApiClient-header.mustache | 2 +- .../src/main/resources/objc/api-body.mustache | 62 ++++++---- .../main/resources/objc/api-header.mustache | 17 ++- .../main/resources/objc/api-protocol.mustache | 24 ++++ samples/client/petstore/objc/README.md | 2 +- .../objc/SwaggerClient/Api/SWGPetApi.h | 17 ++- .../objc/SwaggerClient/Api/SWGPetApi.m | 114 ++++++++++++------ .../objc/SwaggerClient/Api/SWGStoreApi.h | 17 ++- .../objc/SwaggerClient/Api/SWGStoreApi.m | 82 ++++++++----- .../objc/SwaggerClient/Api/SWGUserApi.h | 17 ++- .../objc/SwaggerClient/Api/SWGUserApi.m | 106 ++++++++++------ .../petstore/objc/SwaggerClient/Core/SWGApi.h | 24 ++++ .../objc/SwaggerClient/Core/SWGApiClient.h | 2 +- .../objc/SwaggerClient/Core/SWGApiClient.m | 2 +- .../SwaggerClient/SWGViewController.m | 6 +- 17 files changed, 322 insertions(+), 179 deletions(-) create mode 100644 modules/swagger-codegen/src/main/resources/objc/api-protocol.mustache create mode 100644 samples/client/petstore/objc/SwaggerClient/Core/SWGApi.h diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java index d7532d86ee35..579ae56635e9 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java @@ -226,10 +226,6 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { additionalProperties.put("apiDocPath", apiDocPath); additionalProperties.put("modelDocPath", modelDocPath); - additionalProperties.put("modelFilesPath", modelFilesPath); - additionalProperties.put("coreFilesPath", coreFilesPath); - additionalProperties.put("apiFilesPath", apiFilesPath); - modelPackage = podName; apiPackage = podName; @@ -253,6 +249,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { supportingFiles.add(new SupportingFile("JSONValueTransformer+ISO8601.h", coreFileFolder(), "JSONValueTransformer+ISO8601.h")); supportingFiles.add(new SupportingFile("Configuration-body.mustache", coreFileFolder(), classPrefix + "Configuration.m")); supportingFiles.add(new SupportingFile("Configuration-header.mustache", coreFileFolder(), classPrefix + "Configuration.h")); + supportingFiles.add(new SupportingFile("api-protocol.mustache", coreFileFolder(), classPrefix + "Api.h")); supportingFiles.add(new SupportingFile("podspec.mustache", "", podName + ".podspec")); supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); supportingFiles.add(new SupportingFile("git_push.sh.mustache", "", "git_push.sh")); diff --git a/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache b/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache index 37bdfd8f4a71..a44d68417850 100644 --- a/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache @@ -110,7 +110,7 @@ static NSString * {{classPrefix}}__fileNameForResponse(NSURLResponse *response) #pragma mark - Request Methods -+(unsigned long)requestQueueSize { ++(NSUInteger)requestQueueSize { return [queuedRequests count]; } diff --git a/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache b/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache index 28d5b92f628d..f4a5acdefb1a 100644 --- a/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache @@ -56,7 +56,7 @@ extern NSString *const {{classPrefix}}ResponseObjectErrorKey; * * @return The size of `queuedRequests` static variable. */ -+(unsigned long)requestQueueSize; ++(NSUInteger)requestQueueSize; /** * Sets the client unreachable diff --git a/modules/swagger-codegen/src/main/resources/objc/api-body.mustache b/modules/swagger-codegen/src/main/resources/objc/api-body.mustache index 807acc8ed76b..31e8b872fd67 100644 --- a/modules/swagger-codegen/src/main/resources/objc/api-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/api-body.mustache @@ -6,12 +6,17 @@ {{newline}} @interface {{classname}} () - @property (readwrite, nonatomic, strong) NSMutableDictionary *defaultHeaders; + +@property (nonatomic, strong) NSMutableDictionary *defaultHeaders; + @end @implementation {{classname}} -static {{classname}}* singletonAPI = nil; +NSString* k{{classname}}ErrorDomain = @"{{classname}}ErrorDomain"; +NSInteger k{{classname}}MissingParamErrorCode = 234513; + +@synthesize apiClient = _apiClient; #pragma mark - Initialize methods @@ -22,48 +27,45 @@ static {{classname}}* singletonAPI = nil; if (config.apiClient == nil) { config.apiClient = [[{{classPrefix}}ApiClient alloc] init]; } - self.apiClient = config.apiClient; - self.defaultHeaders = [NSMutableDictionary dictionary]; + _apiClient = config.apiClient; + _defaultHeaders = [NSMutableDictionary dictionary]; } return self; } -- (instancetype) initWithApiClient:({{classPrefix}}ApiClient *)apiClient { +- (id) initWithApiClient:({{classPrefix}}ApiClient *)apiClient { self = [super init]; if (self) { - self.apiClient = apiClient; - self.defaultHeaders = [NSMutableDictionary dictionary]; + _apiClient = apiClient; + _defaultHeaders = [NSMutableDictionary dictionary]; } return self; } #pragma mark - -+({{classname}}*) apiWithHeader:(NSString*)headerValue key:(NSString*)key { - if (singletonAPI == nil) { - singletonAPI = [[{{classname}} alloc] init]; - [singletonAPI addHeader:headerValue forKey:key]; - } - return singletonAPI; ++ (instancetype)sharedAPI { + static {{classname}} *sharedAPI; + static dispatch_once_t once; + dispatch_once(&once, ^{ + sharedAPI = [[self alloc] init]; + }); + return sharedAPI; } -+({{classname}}*) sharedAPI { - if (singletonAPI == nil) { - singletonAPI = [[{{classname}} alloc] init]; - } - return singletonAPI; +-(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]; } --(void) setHeaderValue:(NSString*) value - forKey:(NSString*)key { - [self.defaultHeaders setValue:value forKey:key]; -} - --(unsigned long) requestQueueSize { +-(NSUInteger) requestQueueSize { return [{{classPrefix}}ApiClient requestQueueSize]; } @@ -84,7 +86,13 @@ static {{classname}}* singletonAPI = nil; {{#required}} // verify the required parameter '{{paramName}}' is set if ({{paramName}} == nil) { - [NSException raise:@"Invalid parameter" format:@"Missing the required parameter `{{paramName}}` when calling `{{nickname}}`"]; + NSParameterAssert({{paramName}}); + if(handler) { + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),NSStringFromSelector(@selector({{paramName}}))] }; + NSError* error = [NSError errorWithDomain:k{{classname}}ErrorDomain code:k{{classname}}MissingParamErrorCode userInfo:userInfo]; + handler({{#returnType}}nil, {{/returnType}}error); + } + return nil; } {{/required}} @@ -165,7 +173,9 @@ static {{classname}}* singletonAPI = nil; responseContentType: responseContentType responseType: {{^returnType}}nil{{/returnType}}{{#returnType}}@"{{{ returnType }}}"{{/returnType}} completionBlock: ^(id data, NSError *error) { - handler({{#returnType}}({{{ returnType }}})data, {{/returnType}}error); + if(handler) { + handler({{#returnType}}({{{ returnType }}})data, {{/returnType}}error); + } } ]; } diff --git a/modules/swagger-codegen/src/main/resources/objc/api-header.mustache b/modules/swagger-codegen/src/main/resources/objc/api-header.mustache index e7491a14ece7..67bb9045ec8c 100644 --- a/modules/swagger-codegen/src/main/resources/objc/api-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/api-header.mustache @@ -1,10 +1,8 @@ #import {{#imports}}#import "{{import}}.h" {{/imports}} -#import "{{classPrefix}}Object.h" -#import "{{classPrefix}}ApiClient.h" +#import "{{classPrefix}}Api.h" {{newline}} - /** * NOTE: This class is auto generated by the swagger code generator program. * https://github.com/swagger-api/swagger-codegen @@ -12,15 +10,14 @@ */ {{#operations}} -@interface {{classname}}: NSObject -@property(nonatomic, assign){{classPrefix}}ApiClient *apiClient; +@interface {{classname}}: NSObject <{{classPrefix}}Api> + +extern NSString* k{{classname}}ErrorDomain; +extern NSInteger k{{classname}}MissingParamErrorCode; + ++(instancetype) sharedAPI; --(instancetype) initWithApiClient:({{classPrefix}}ApiClient *)apiClient; --(void) addHeader:(NSString*)value forKey:(NSString*)key; --(unsigned long) requestQueueSize; -+({{classname}}*) apiWithHeader:(NSString*)headerValue key:(NSString*)key; -+({{classname}}*) sharedAPI; {{#operation}} /// {{{summary}}} /// {{#notes}}{{{notes}}}{{/notes}} diff --git a/modules/swagger-codegen/src/main/resources/objc/api-protocol.mustache b/modules/swagger-codegen/src/main/resources/objc/api-protocol.mustache new file mode 100644 index 000000000000..142b75dabaa9 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/objc/api-protocol.mustache @@ -0,0 +1,24 @@ +#import +#import "{{classPrefix}}Object.h" +#import "{{classPrefix}}ApiClient.h" + +/** + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen + * Do not edit the class manually. + */ + +@protocol {{classPrefix}}Api + +@property(nonatomic, assign) {{classPrefix}}ApiClient *apiClient; + +-(id) initWithApiClient:({{classPrefix}}ApiClient *)apiClient; + +-(void) addHeader:(NSString*)value forKey:(NSString*)key DEPRECATED_MSG_ATTRIBUTE("setDefaultHeaderValue:forKey:"); + +-(void) setDefaultHeaderValue:(NSString*) value forKey:(NSString*)key; +-(NSString*) defaultHeaderForKey:(NSString*)key; + +-(NSUInteger) requestQueueSize; + +@end diff --git a/samples/client/petstore/objc/README.md b/samples/client/petstore/objc/README.md index d5b72d7cfe90..10bdfc3e7711 100644 --- a/samples/client/petstore/objc/README.md +++ b/samples/client/petstore/objc/README.md @@ -6,7 +6,7 @@ This ObjC package is automatically generated by the [Swagger Codegen](https://gi - API version: 1.0.0 - Package version: -- Build date: 2016-05-13T17:46:25.156+02:00 +- Build date: 2016-05-16T07:20:55.501+02:00 - Build package: class io.swagger.codegen.languages.ObjcClientCodegen ## Requirements diff --git a/samples/client/petstore/objc/SwaggerClient/Api/SWGPetApi.h b/samples/client/petstore/objc/SwaggerClient/Api/SWGPetApi.h index 6fea33df4d63..be068cdb77e3 100644 --- a/samples/client/petstore/objc/SwaggerClient/Api/SWGPetApi.h +++ b/samples/client/petstore/objc/SwaggerClient/Api/SWGPetApi.h @@ -1,8 +1,6 @@ #import #import "SWGPet.h" -#import "SWGObject.h" -#import "SWGApiClient.h" - +#import "SWGApi.h" /** * NOTE: This class is auto generated by the swagger code generator program. @@ -10,15 +8,14 @@ * Do not edit the class manually. */ -@interface SWGPetApi: NSObject -@property(nonatomic, assign)SWGApiClient *apiClient; +@interface SWGPetApi: NSObject + +extern NSString* kSWGPetApiErrorDomain; +extern NSInteger kSWGPetApiMissingParamErrorCode; + ++(instancetype) sharedAPI; --(instancetype) initWithApiClient:(SWGApiClient *)apiClient; --(void) addHeader:(NSString*)value forKey:(NSString*)key; --(unsigned long) requestQueueSize; -+(SWGPetApi*) apiWithHeader:(NSString*)headerValue key:(NSString*)key; -+(SWGPetApi*) sharedAPI; /// Add a new pet to the store /// /// diff --git a/samples/client/petstore/objc/SwaggerClient/Api/SWGPetApi.m b/samples/client/petstore/objc/SwaggerClient/Api/SWGPetApi.m index 37b0f9407f78..dfe39dc6e754 100644 --- a/samples/client/petstore/objc/SwaggerClient/Api/SWGPetApi.m +++ b/samples/client/petstore/objc/SwaggerClient/Api/SWGPetApi.m @@ -4,12 +4,17 @@ @interface SWGPetApi () - @property (readwrite, nonatomic, strong) NSMutableDictionary *defaultHeaders; + +@property (nonatomic, strong) NSMutableDictionary *defaultHeaders; + @end @implementation SWGPetApi -static SWGPetApi* singletonAPI = nil; +NSString* kSWGPetApiErrorDomain = @"SWGPetApiErrorDomain"; +NSInteger kSWGPetApiMissingParamErrorCode = 234513; + +@synthesize apiClient = _apiClient; #pragma mark - Initialize methods @@ -20,48 +25,45 @@ static SWGPetApi* singletonAPI = nil; if (config.apiClient == nil) { config.apiClient = [[SWGApiClient alloc] init]; } - self.apiClient = config.apiClient; - self.defaultHeaders = [NSMutableDictionary dictionary]; + _apiClient = config.apiClient; + _defaultHeaders = [NSMutableDictionary dictionary]; } return self; } -- (instancetype) initWithApiClient:(SWGApiClient *)apiClient { +- (id) initWithApiClient:(SWGApiClient *)apiClient { self = [super init]; if (self) { - self.apiClient = apiClient; - self.defaultHeaders = [NSMutableDictionary dictionary]; + _apiClient = apiClient; + _defaultHeaders = [NSMutableDictionary dictionary]; } return self; } #pragma mark - -+(SWGPetApi*) apiWithHeader:(NSString*)headerValue key:(NSString*)key { - if (singletonAPI == nil) { - singletonAPI = [[SWGPetApi alloc] init]; - [singletonAPI addHeader:headerValue forKey:key]; - } - return singletonAPI; ++ (instancetype)sharedAPI { + static SWGPetApi *sharedAPI; + static dispatch_once_t once; + dispatch_once(&once, ^{ + sharedAPI = [[self alloc] init]; + }); + return sharedAPI; } -+(SWGPetApi*) sharedAPI { - if (singletonAPI == nil) { - singletonAPI = [[SWGPetApi alloc] init]; - } - return singletonAPI; +-(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]; } --(void) setHeaderValue:(NSString*) value - forKey:(NSString*)key { - [self.defaultHeaders setValue:value forKey:key]; -} - --(unsigned long) requestQueueSize { +-(NSUInteger) requestQueueSize { return [SWGApiClient requestQueueSize]; } @@ -118,7 +120,9 @@ static SWGPetApi* singletonAPI = nil; responseContentType: responseContentType responseType: nil completionBlock: ^(id data, NSError *error) { - handler(error); + if(handler) { + handler(error); + } } ]; } @@ -137,7 +141,13 @@ static SWGPetApi* singletonAPI = nil; completionHandler: (void (^)(NSError* error)) handler { // verify the required parameter 'petId' is set if (petId == nil) { - [NSException raise:@"Invalid parameter" format:@"Missing the required parameter `petId` when calling `deletePet`"]; + NSParameterAssert(petId); + if(handler) { + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),NSStringFromSelector(@selector(petId))] }; + NSError* error = [NSError errorWithDomain:kSWGPetApiErrorDomain code:kSWGPetApiMissingParamErrorCode userInfo:userInfo]; + handler(error); + } + return nil; } NSMutableString* resourcePath = [NSMutableString stringWithFormat:@"/pet/{petId}"]; @@ -189,7 +199,9 @@ static SWGPetApi* singletonAPI = nil; responseContentType: responseContentType responseType: nil completionBlock: ^(id data, NSError *error) { - handler(error); + if(handler) { + handler(error); + } } ]; } @@ -248,7 +260,9 @@ static SWGPetApi* singletonAPI = nil; responseContentType: responseContentType responseType: @"NSArray*" completionBlock: ^(id data, NSError *error) { - handler((NSArray*)data, error); + if(handler) { + handler((NSArray*)data, error); + } } ]; } @@ -307,7 +321,9 @@ static SWGPetApi* singletonAPI = nil; responseContentType: responseContentType responseType: @"NSArray*" completionBlock: ^(id data, NSError *error) { - handler((NSArray*)data, error); + if(handler) { + handler((NSArray*)data, error); + } } ]; } @@ -323,7 +339,13 @@ static SWGPetApi* singletonAPI = nil; completionHandler: (void (^)(SWGPet* output, NSError* error)) handler { // verify the required parameter 'petId' is set if (petId == nil) { - [NSException raise:@"Invalid parameter" format:@"Missing the required parameter `petId` when calling `getPetById`"]; + NSParameterAssert(petId); + if(handler) { + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),NSStringFromSelector(@selector(petId))] }; + NSError* error = [NSError errorWithDomain:kSWGPetApiErrorDomain code:kSWGPetApiMissingParamErrorCode userInfo:userInfo]; + handler(nil, error); + } + return nil; } NSMutableString* resourcePath = [NSMutableString stringWithFormat:@"/pet/{petId}"]; @@ -370,7 +392,9 @@ static SWGPetApi* singletonAPI = nil; responseContentType: responseContentType responseType: @"SWGPet*" completionBlock: ^(id data, NSError *error) { - handler((SWGPet*)data, error); + if(handler) { + handler((SWGPet*)data, error); + } } ]; } @@ -426,7 +450,9 @@ static SWGPetApi* singletonAPI = nil; responseContentType: responseContentType responseType: nil completionBlock: ^(id data, NSError *error) { - handler(error); + if(handler) { + handler(error); + } } ]; } @@ -448,7 +474,13 @@ static SWGPetApi* singletonAPI = nil; completionHandler: (void (^)(NSError* error)) handler { // verify the required parameter 'petId' is set if (petId == nil) { - [NSException raise:@"Invalid parameter" format:@"Missing the required parameter `petId` when calling `updatePetWithForm`"]; + NSParameterAssert(petId); + if(handler) { + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),NSStringFromSelector(@selector(petId))] }; + NSError* error = [NSError errorWithDomain:kSWGPetApiErrorDomain code:kSWGPetApiMissingParamErrorCode userInfo:userInfo]; + handler(error); + } + return nil; } NSMutableString* resourcePath = [NSMutableString stringWithFormat:@"/pet/{petId}"]; @@ -501,7 +533,9 @@ static SWGPetApi* singletonAPI = nil; responseContentType: responseContentType responseType: nil completionBlock: ^(id data, NSError *error) { - handler(error); + if(handler) { + handler(error); + } } ]; } @@ -523,7 +557,13 @@ static SWGPetApi* singletonAPI = nil; completionHandler: (void (^)(NSError* error)) handler { // verify the required parameter 'petId' is set if (petId == nil) { - [NSException raise:@"Invalid parameter" format:@"Missing the required parameter `petId` when calling `uploadFile`"]; + NSParameterAssert(petId); + if(handler) { + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),NSStringFromSelector(@selector(petId))] }; + NSError* error = [NSError errorWithDomain:kSWGPetApiErrorDomain code:kSWGPetApiMissingParamErrorCode userInfo:userInfo]; + handler(error); + } + return nil; } NSMutableString* resourcePath = [NSMutableString stringWithFormat:@"/pet/{petId}/uploadImage"]; @@ -574,7 +614,9 @@ static SWGPetApi* singletonAPI = nil; responseContentType: responseContentType responseType: nil completionBlock: ^(id data, NSError *error) { - handler(error); + if(handler) { + handler(error); + } } ]; } diff --git a/samples/client/petstore/objc/SwaggerClient/Api/SWGStoreApi.h b/samples/client/petstore/objc/SwaggerClient/Api/SWGStoreApi.h index 4a29c72e6444..b39dcce9e6b5 100644 --- a/samples/client/petstore/objc/SwaggerClient/Api/SWGStoreApi.h +++ b/samples/client/petstore/objc/SwaggerClient/Api/SWGStoreApi.h @@ -1,8 +1,6 @@ #import #import "SWGOrder.h" -#import "SWGObject.h" -#import "SWGApiClient.h" - +#import "SWGApi.h" /** * NOTE: This class is auto generated by the swagger code generator program. @@ -10,15 +8,14 @@ * Do not edit the class manually. */ -@interface SWGStoreApi: NSObject -@property(nonatomic, assign)SWGApiClient *apiClient; +@interface SWGStoreApi: NSObject + +extern NSString* kSWGStoreApiErrorDomain; +extern NSInteger kSWGStoreApiMissingParamErrorCode; + ++(instancetype) sharedAPI; --(instancetype) initWithApiClient:(SWGApiClient *)apiClient; --(void) addHeader:(NSString*)value forKey:(NSString*)key; --(unsigned long) requestQueueSize; -+(SWGStoreApi*) apiWithHeader:(NSString*)headerValue key:(NSString*)key; -+(SWGStoreApi*) sharedAPI; /// Delete purchase order by ID /// For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors /// diff --git a/samples/client/petstore/objc/SwaggerClient/Api/SWGStoreApi.m b/samples/client/petstore/objc/SwaggerClient/Api/SWGStoreApi.m index 91e5e495af29..f707b8a21998 100644 --- a/samples/client/petstore/objc/SwaggerClient/Api/SWGStoreApi.m +++ b/samples/client/petstore/objc/SwaggerClient/Api/SWGStoreApi.m @@ -4,12 +4,17 @@ @interface SWGStoreApi () - @property (readwrite, nonatomic, strong) NSMutableDictionary *defaultHeaders; + +@property (nonatomic, strong) NSMutableDictionary *defaultHeaders; + @end @implementation SWGStoreApi -static SWGStoreApi* singletonAPI = nil; +NSString* kSWGStoreApiErrorDomain = @"SWGStoreApiErrorDomain"; +NSInteger kSWGStoreApiMissingParamErrorCode = 234513; + +@synthesize apiClient = _apiClient; #pragma mark - Initialize methods @@ -20,48 +25,45 @@ static SWGStoreApi* singletonAPI = nil; if (config.apiClient == nil) { config.apiClient = [[SWGApiClient alloc] init]; } - self.apiClient = config.apiClient; - self.defaultHeaders = [NSMutableDictionary dictionary]; + _apiClient = config.apiClient; + _defaultHeaders = [NSMutableDictionary dictionary]; } return self; } -- (instancetype) initWithApiClient:(SWGApiClient *)apiClient { +- (id) initWithApiClient:(SWGApiClient *)apiClient { self = [super init]; if (self) { - self.apiClient = apiClient; - self.defaultHeaders = [NSMutableDictionary dictionary]; + _apiClient = apiClient; + _defaultHeaders = [NSMutableDictionary dictionary]; } return self; } #pragma mark - -+(SWGStoreApi*) apiWithHeader:(NSString*)headerValue key:(NSString*)key { - if (singletonAPI == nil) { - singletonAPI = [[SWGStoreApi alloc] init]; - [singletonAPI addHeader:headerValue forKey:key]; - } - return singletonAPI; ++ (instancetype)sharedAPI { + static SWGStoreApi *sharedAPI; + static dispatch_once_t once; + dispatch_once(&once, ^{ + sharedAPI = [[self alloc] init]; + }); + return sharedAPI; } -+(SWGStoreApi*) sharedAPI { - if (singletonAPI == nil) { - singletonAPI = [[SWGStoreApi alloc] init]; - } - return singletonAPI; +-(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]; } --(void) setHeaderValue:(NSString*) value - forKey:(NSString*)key { - [self.defaultHeaders setValue:value forKey:key]; -} - --(unsigned long) requestQueueSize { +-(NSUInteger) requestQueueSize { return [SWGApiClient requestQueueSize]; } @@ -78,7 +80,13 @@ static SWGStoreApi* singletonAPI = nil; completionHandler: (void (^)(NSError* error)) handler { // verify the required parameter 'orderId' is set if (orderId == nil) { - [NSException raise:@"Invalid parameter" format:@"Missing the required parameter `orderId` when calling `deleteOrder`"]; + NSParameterAssert(orderId); + if(handler) { + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),NSStringFromSelector(@selector(orderId))] }; + NSError* error = [NSError errorWithDomain:kSWGStoreApiErrorDomain code:kSWGStoreApiMissingParamErrorCode userInfo:userInfo]; + handler(error); + } + return nil; } NSMutableString* resourcePath = [NSMutableString stringWithFormat:@"/store/order/{orderId}"]; @@ -125,7 +133,9 @@ static SWGStoreApi* singletonAPI = nil; responseContentType: responseContentType responseType: nil completionBlock: ^(id data, NSError *error) { - handler(error); + if(handler) { + handler(error); + } } ]; } @@ -178,7 +188,9 @@ static SWGStoreApi* singletonAPI = nil; responseContentType: responseContentType responseType: @"NSDictionary*" completionBlock: ^(id data, NSError *error) { - handler((NSDictionary*)data, error); + if(handler) { + handler((NSDictionary*)data, error); + } } ]; } @@ -194,7 +206,13 @@ static SWGStoreApi* singletonAPI = nil; completionHandler: (void (^)(SWGOrder* output, NSError* error)) handler { // verify the required parameter 'orderId' is set if (orderId == nil) { - [NSException raise:@"Invalid parameter" format:@"Missing the required parameter `orderId` when calling `getOrderById`"]; + NSParameterAssert(orderId); + if(handler) { + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),NSStringFromSelector(@selector(orderId))] }; + NSError* error = [NSError errorWithDomain:kSWGStoreApiErrorDomain code:kSWGStoreApiMissingParamErrorCode userInfo:userInfo]; + handler(nil, error); + } + return nil; } NSMutableString* resourcePath = [NSMutableString stringWithFormat:@"/store/order/{orderId}"]; @@ -241,7 +259,9 @@ static SWGStoreApi* singletonAPI = nil; responseContentType: responseContentType responseType: @"SWGOrder*" completionBlock: ^(id data, NSError *error) { - handler((SWGOrder*)data, error); + if(handler) { + handler((SWGOrder*)data, error); + } } ]; } @@ -297,7 +317,9 @@ static SWGStoreApi* singletonAPI = nil; responseContentType: responseContentType responseType: @"SWGOrder*" completionBlock: ^(id data, NSError *error) { - handler((SWGOrder*)data, error); + if(handler) { + handler((SWGOrder*)data, error); + } } ]; } diff --git a/samples/client/petstore/objc/SwaggerClient/Api/SWGUserApi.h b/samples/client/petstore/objc/SwaggerClient/Api/SWGUserApi.h index 73dcef55c023..c3b375d71338 100644 --- a/samples/client/petstore/objc/SwaggerClient/Api/SWGUserApi.h +++ b/samples/client/petstore/objc/SwaggerClient/Api/SWGUserApi.h @@ -1,8 +1,6 @@ #import #import "SWGUser.h" -#import "SWGObject.h" -#import "SWGApiClient.h" - +#import "SWGApi.h" /** * NOTE: This class is auto generated by the swagger code generator program. @@ -10,15 +8,14 @@ * Do not edit the class manually. */ -@interface SWGUserApi: NSObject -@property(nonatomic, assign)SWGApiClient *apiClient; +@interface SWGUserApi: NSObject + +extern NSString* kSWGUserApiErrorDomain; +extern NSInteger kSWGUserApiMissingParamErrorCode; + ++(instancetype) sharedAPI; --(instancetype) initWithApiClient:(SWGApiClient *)apiClient; --(void) addHeader:(NSString*)value forKey:(NSString*)key; --(unsigned long) requestQueueSize; -+(SWGUserApi*) apiWithHeader:(NSString*)headerValue key:(NSString*)key; -+(SWGUserApi*) sharedAPI; /// Create user /// This can only be done by the logged in user. /// diff --git a/samples/client/petstore/objc/SwaggerClient/Api/SWGUserApi.m b/samples/client/petstore/objc/SwaggerClient/Api/SWGUserApi.m index ecb5aa7ba538..483da7c88878 100644 --- a/samples/client/petstore/objc/SwaggerClient/Api/SWGUserApi.m +++ b/samples/client/petstore/objc/SwaggerClient/Api/SWGUserApi.m @@ -4,12 +4,17 @@ @interface SWGUserApi () - @property (readwrite, nonatomic, strong) NSMutableDictionary *defaultHeaders; + +@property (nonatomic, strong) NSMutableDictionary *defaultHeaders; + @end @implementation SWGUserApi -static SWGUserApi* singletonAPI = nil; +NSString* kSWGUserApiErrorDomain = @"SWGUserApiErrorDomain"; +NSInteger kSWGUserApiMissingParamErrorCode = 234513; + +@synthesize apiClient = _apiClient; #pragma mark - Initialize methods @@ -20,48 +25,45 @@ static SWGUserApi* singletonAPI = nil; if (config.apiClient == nil) { config.apiClient = [[SWGApiClient alloc] init]; } - self.apiClient = config.apiClient; - self.defaultHeaders = [NSMutableDictionary dictionary]; + _apiClient = config.apiClient; + _defaultHeaders = [NSMutableDictionary dictionary]; } return self; } -- (instancetype) initWithApiClient:(SWGApiClient *)apiClient { +- (id) initWithApiClient:(SWGApiClient *)apiClient { self = [super init]; if (self) { - self.apiClient = apiClient; - self.defaultHeaders = [NSMutableDictionary dictionary]; + _apiClient = apiClient; + _defaultHeaders = [NSMutableDictionary dictionary]; } return self; } #pragma mark - -+(SWGUserApi*) apiWithHeader:(NSString*)headerValue key:(NSString*)key { - if (singletonAPI == nil) { - singletonAPI = [[SWGUserApi alloc] init]; - [singletonAPI addHeader:headerValue forKey:key]; - } - return singletonAPI; ++ (instancetype)sharedAPI { + static SWGUserApi *sharedAPI; + static dispatch_once_t once; + dispatch_once(&once, ^{ + sharedAPI = [[self alloc] init]; + }); + return sharedAPI; } -+(SWGUserApi*) sharedAPI { - if (singletonAPI == nil) { - singletonAPI = [[SWGUserApi alloc] init]; - } - return singletonAPI; +-(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]; } --(void) setHeaderValue:(NSString*) value - forKey:(NSString*)key { - [self.defaultHeaders setValue:value forKey:key]; -} - --(unsigned long) requestQueueSize { +-(NSUInteger) requestQueueSize { return [SWGApiClient requestQueueSize]; } @@ -118,7 +120,9 @@ static SWGUserApi* singletonAPI = nil; responseContentType: responseContentType responseType: nil completionBlock: ^(id data, NSError *error) { - handler(error); + if(handler) { + handler(error); + } } ]; } @@ -174,7 +178,9 @@ static SWGUserApi* singletonAPI = nil; responseContentType: responseContentType responseType: nil completionBlock: ^(id data, NSError *error) { - handler(error); + if(handler) { + handler(error); + } } ]; } @@ -230,7 +236,9 @@ static SWGUserApi* singletonAPI = nil; responseContentType: responseContentType responseType: nil completionBlock: ^(id data, NSError *error) { - handler(error); + if(handler) { + handler(error); + } } ]; } @@ -246,7 +254,13 @@ static SWGUserApi* singletonAPI = nil; completionHandler: (void (^)(NSError* error)) handler { // verify the required parameter 'username' is set if (username == nil) { - [NSException raise:@"Invalid parameter" format:@"Missing the required parameter `username` when calling `deleteUser`"]; + NSParameterAssert(username); + if(handler) { + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),NSStringFromSelector(@selector(username))] }; + NSError* error = [NSError errorWithDomain:kSWGUserApiErrorDomain code:kSWGUserApiMissingParamErrorCode userInfo:userInfo]; + handler(error); + } + return nil; } NSMutableString* resourcePath = [NSMutableString stringWithFormat:@"/user/{username}"]; @@ -293,7 +307,9 @@ static SWGUserApi* singletonAPI = nil; responseContentType: responseContentType responseType: nil completionBlock: ^(id data, NSError *error) { - handler(error); + if(handler) { + handler(error); + } } ]; } @@ -309,7 +325,13 @@ static SWGUserApi* singletonAPI = nil; completionHandler: (void (^)(SWGUser* output, NSError* error)) handler { // verify the required parameter 'username' is set if (username == nil) { - [NSException raise:@"Invalid parameter" format:@"Missing the required parameter `username` when calling `getUserByName`"]; + NSParameterAssert(username); + if(handler) { + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),NSStringFromSelector(@selector(username))] }; + NSError* error = [NSError errorWithDomain:kSWGUserApiErrorDomain code:kSWGUserApiMissingParamErrorCode userInfo:userInfo]; + handler(nil, error); + } + return nil; } NSMutableString* resourcePath = [NSMutableString stringWithFormat:@"/user/{username}"]; @@ -356,7 +378,9 @@ static SWGUserApi* singletonAPI = nil; responseContentType: responseContentType responseType: @"SWGUser*" completionBlock: ^(id data, NSError *error) { - handler((SWGUser*)data, error); + if(handler) { + handler((SWGUser*)data, error); + } } ]; } @@ -420,7 +444,9 @@ static SWGUserApi* singletonAPI = nil; responseContentType: responseContentType responseType: @"NSString*" completionBlock: ^(id data, NSError *error) { - handler((NSString*)data, error); + if(handler) { + handler((NSString*)data, error); + } } ]; } @@ -473,7 +499,9 @@ static SWGUserApi* singletonAPI = nil; responseContentType: responseContentType responseType: nil completionBlock: ^(id data, NSError *error) { - handler(error); + if(handler) { + handler(error); + } } ]; } @@ -492,7 +520,13 @@ static SWGUserApi* singletonAPI = nil; completionHandler: (void (^)(NSError* error)) handler { // verify the required parameter 'username' is set if (username == nil) { - [NSException raise:@"Invalid parameter" format:@"Missing the required parameter `username` when calling `updateUser`"]; + NSParameterAssert(username); + if(handler) { + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),NSStringFromSelector(@selector(username))] }; + NSError* error = [NSError errorWithDomain:kSWGUserApiErrorDomain code:kSWGUserApiMissingParamErrorCode userInfo:userInfo]; + handler(error); + } + return nil; } NSMutableString* resourcePath = [NSMutableString stringWithFormat:@"/user/{username}"]; @@ -540,7 +574,9 @@ static SWGUserApi* singletonAPI = nil; responseContentType: responseContentType responseType: nil completionBlock: ^(id data, NSError *error) { - handler(error); + if(handler) { + handler(error); + } } ]; } diff --git a/samples/client/petstore/objc/SwaggerClient/Core/SWGApi.h b/samples/client/petstore/objc/SwaggerClient/Core/SWGApi.h new file mode 100644 index 000000000000..874f1f48a5d3 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClient/Core/SWGApi.h @@ -0,0 +1,24 @@ +#import +#import "SWGObject.h" +#import "SWGApiClient.h" + +/** + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen + * Do not edit the class manually. + */ + +@protocol SWGApi + +@property(nonatomic, assign) SWGApiClient *apiClient; + +-(id) initWithApiClient:(SWGApiClient *)apiClient; + +-(void) addHeader:(NSString*)value forKey:(NSString*)key DEPRECATED_MSG_ATTRIBUTE("setDefaultHeaderValue:forKey:"); + +-(void) setDefaultHeaderValue:(NSString*) value forKey:(NSString*)key; +-(NSString*) defaultHeaderForKey:(NSString*)key; + +-(NSUInteger) requestQueueSize; + +@end diff --git a/samples/client/petstore/objc/SwaggerClient/Core/SWGApiClient.h b/samples/client/petstore/objc/SwaggerClient/Core/SWGApiClient.h index adbb8f15a624..fd5ed169abe7 100644 --- a/samples/client/petstore/objc/SwaggerClient/Core/SWGApiClient.h +++ b/samples/client/petstore/objc/SwaggerClient/Core/SWGApiClient.h @@ -60,7 +60,7 @@ extern NSString *const SWGResponseObjectErrorKey; * * @return The size of `queuedRequests` static variable. */ -+(unsigned long)requestQueueSize; ++(NSUInteger)requestQueueSize; /** * Sets the client unreachable diff --git a/samples/client/petstore/objc/SwaggerClient/Core/SWGApiClient.m b/samples/client/petstore/objc/SwaggerClient/Core/SWGApiClient.m index 55e84a056a44..4f0b218e853b 100644 --- a/samples/client/petstore/objc/SwaggerClient/Core/SWGApiClient.m +++ b/samples/client/petstore/objc/SwaggerClient/Core/SWGApiClient.m @@ -110,7 +110,7 @@ static NSString * SWG__fileNameForResponse(NSURLResponse *response) { #pragma mark - Request Methods -+(unsigned long)requestQueueSize { ++(NSUInteger)requestQueueSize { return [queuedRequests count]; } diff --git a/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SWGViewController.m b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SWGViewController.m index 4405438e7ee3..7f8e3d67881b 100644 --- a/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SWGViewController.m +++ b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SWGViewController.m @@ -34,7 +34,7 @@ - (SWGPet*) createPet { SWGPet * pet = [[SWGPet alloc] init]; - pet._id = [[NSNumber alloc] initWithLong:[[NSDate date] timeIntervalSince1970]]; + pet._id = @((long) [[NSDate date] timeIntervalSince1970]); pet.name = @"monkey"; SWGCategory * category = [[SWGCategory alloc] init]; @@ -48,11 +48,11 @@ SWGTag *tag2 = [[SWGTag alloc] init]; tag2._id = [[NSNumber alloc] initWithInteger:arc4random_uniform(100000)]; tag2.name = @"test tag 2"; - pet.tags = (NSArray *)[[NSArray alloc] initWithObjects:tag1, tag2, nil]; + pet.tags = (NSArray *) @[tag1, tag2]; pet.status = @"available"; - NSArray * photos = [[NSArray alloc] initWithObjects:@"http://foo.bar.com/3", @"http://foo.bar.com/4", nil]; + NSArray * photos = @[@"http://foo.bar.com/3", @"http://foo.bar.com/4"]; pet.photoUrls = photos; return pet; } From db27498961c3220f189f81d2510f25677c975032 Mon Sep 17 00:00:00 2001 From: Mateusz Mackowiak Date: Mon, 16 May 2016 07:48:22 +0200 Subject: [PATCH 2/4] [Objc] Remove try catch form documentation. --- .../src/main/resources/objc/README.mustache | 13 +++---------- samples/client/petstore/objc/README.md | 15 ++++----------- 2 files changed, 7 insertions(+), 21 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/objc/README.mustache b/modules/swagger-codegen/src/main/resources/objc/README.mustache index ed48e239596f..db56c1b4b774 100644 --- a/modules/swagger-codegen/src/main/resources/objc/README.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/README.mustache @@ -42,6 +42,7 @@ pod '{{podName}}', :path => 'Vendor/{{podName}}' ### Usage Import the following: + ```objc #import <{{podName}}/{{{classPrefix}}}ApiClient.h> #import <{{podName}}/{{{classPrefix}}}Configuration.h> @@ -81,12 +82,10 @@ Please follow the [installation procedure](#installation--usage) and then run th {{#allParams}}{{{dataType}}} *{{paramName}} = {{{example}}}; // {{{description}}}{{^required}} (optional){{/required}}{{#defaultValue}} (default to {{{.}}}){{/defaultValue}} {{/allParams}} -@try -{ - {{classname}} *apiInstance = [[{{classname}} alloc] init]; +{{classname}} *apiInstance = [[{{classname}} alloc] init]; {{#summary}} // {{{.}}} -{{/summary}} [apiInstance {{#vendorExtensions.x-objc-operationId}}{{vendorExtensions.x-objc-operationId}}{{/vendorExtensions.x-objc-operationId}}{{^vendorExtensions.x-objc-operationId}}{{nickname}}{{#hasParams}}With{{vendorExtensions.firstParamAltName}}{{/hasParams}}{{^hasParams}}WithCompletionHandler: {{/hasParams}}{{/vendorExtensions.x-objc-operationId}}{{#allParams}}{{#secondaryParam}} +{{/summary}}[apiInstance {{#vendorExtensions.x-objc-operationId}}{{vendorExtensions.x-objc-operationId}}{{/vendorExtensions.x-objc-operationId}}{{^vendorExtensions.x-objc-operationId}}{{nickname}}{{#hasParams}}With{{vendorExtensions.firstParamAltName}}{{/hasParams}}{{^hasParams}}WithCompletionHandler: {{/hasParams}}{{/vendorExtensions.x-objc-operationId}}{{#allParams}}{{#secondaryParam}} {{paramName}}{{/secondaryParam}}:{{paramName}}{{/allParams}} {{#hasParams}}completionHandler: {{/hasParams}}^({{#returnBaseType}}{{{returnType}}} output, {{/returnBaseType}}NSError* error)) { {{#returnType}} @@ -98,12 +97,6 @@ Please follow the [installation procedure](#installation--usage) and then run th NSLog(@"Error: %@", error); } }]; -} -@catch (NSException *exception) -{ - NSLog(@"Exception when calling {{classname}}->{{operationId}}: %@ ", exception.name); - NSLog(@"Reason: %@ ", exception.reason); -} {{/-first}}{{/operation}}{{/operations}}{{/-first}}{{/apis}}{{/apiInfo}} ``` diff --git a/samples/client/petstore/objc/README.md b/samples/client/petstore/objc/README.md index 10bdfc3e7711..b5c37dd79459 100644 --- a/samples/client/petstore/objc/README.md +++ b/samples/client/petstore/objc/README.md @@ -6,7 +6,7 @@ This ObjC package is automatically generated by the [Swagger Codegen](https://gi - API version: 1.0.0 - Package version: -- Build date: 2016-05-16T07:20:55.501+02:00 +- Build date: 2016-05-16T07:44:16.324+02:00 - Build package: class io.swagger.codegen.languages.ObjcClientCodegen ## Requirements @@ -37,6 +37,7 @@ pod 'SwaggerClient', :path => 'Vendor/SwaggerClient' ### Usage Import the following: + ```objc #import #import @@ -71,23 +72,15 @@ SWGConfiguration *apiConfig = [SWGConfiguration sharedConfig]; SWGPet* *body = [[SWGPet alloc] init]; // Pet object that needs to be added to the store (optional) -@try -{ - SWGPetApi *apiInstance = [[SWGPetApi alloc] init]; +SWGPetApi *apiInstance = [[SWGPetApi alloc] init]; // Add a new pet to the store - [apiInstance addPetWithBody:body +[apiInstance addPetWithBody:body completionHandler: ^(NSError* error)) { if (error) { NSLog(@"Error: %@", error); } }]; -} -@catch (NSException *exception) -{ - NSLog(@"Exception when calling SWGPetApi->addPet: %@ ", exception.name); - NSLog(@"Reason: %@ ", exception.reason); -} ``` From 7e1b080e24f69e1066f95dcf0234842b386254b2 Mon Sep 17 00:00:00 2001 From: Mateusz Mackowiak Date: Mon, 16 May 2016 08:55:08 +0200 Subject: [PATCH 3/4] [Objc] - Default headers in shared configuration --- .../resources/objc/ApiClient-body.mustache | 18 ++++++------ .../resources/objc/ApiClient-header.mustache | 7 +++++ .../objc/Configuration-body.mustache | 28 +++++++++++++++++-- .../objc/Configuration-header.mustache | 27 ++++++++++++++++-- .../src/main/resources/objc/api-body.mustache | 5 ++-- samples/client/petstore/objc/README.md | 2 +- .../objc/SwaggerClient/Api/SWGPetApi.m | 26 ++++++++++------- .../objc/SwaggerClient/Api/SWGStoreApi.m | 12 +++++--- .../objc/SwaggerClient/Api/SWGUserApi.m | 24 ++++++++++------ .../objc/SwaggerClient/Core/SWGApiClient.h | 7 +++++ .../objc/SwaggerClient/Core/SWGApiClient.m | 18 ++++++------ .../SwaggerClient/Core/SWGConfiguration.h | 27 ++++++++++++++++-- .../SwaggerClient/Core/SWGConfiguration.m | 28 +++++++++++++++++-- 13 files changed, 179 insertions(+), 50 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache b/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache index a44d68417850..f0f99bc96e2a 100644 --- a/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache @@ -83,8 +83,7 @@ static NSString * {{classPrefix}}__fileNameForResponse(NSURLResponse *response) reachabilityStatus = status; } -- (void)setHeaderValue:(NSString*) value - forKey:(NSString*) forKey { +- (void)setHeaderValue:(NSString*) value forKey:(NSString*) forKey { [self.requestSerializer setValue:value forHTTPHeaderField:forKey]; } @@ -221,8 +220,7 @@ static NSString * {{classPrefix}}__fileNameForResponse(NSURLResponse *response) NSError *augmentedError = [error initWithDomain:error.domain code:error.code userInfo:userInfo]; completionBlock(nil, augmentedError); } - {{classPrefix}}Configuration *config = [{{classPrefix}}Configuration sharedConfig]; - NSString *directory = config.tempFolderPath ?: NSTemporaryDirectory(); + NSString *directory = [self configuration].tempFolderPath ?: NSTemporaryDirectory(); NSString * filename = {{classPrefix}}__fileNameForResponse(response); NSString *filepath = [directory stringByAppendingPathComponent:filename]; @@ -442,16 +440,16 @@ static NSString * {{classPrefix}}__fileNameForResponse(NSURLResponse *response) queryParams:(NSDictionary *__autoreleasing *)querys WithAuthSettings:(NSArray *)authSettings { - if (!authSettings || [authSettings count] == 0) { + if ([authSettings count] == 0) { return; } NSMutableDictionary *headersWithAuth = [NSMutableDictionary dictionaryWithDictionary:*headers]; NSMutableDictionary *querysWithAuth = [NSMutableDictionary dictionaryWithDictionary:*querys]; - {{classPrefix}}Configuration *config = [{{classPrefix}}Configuration sharedConfig]; + NSDictionary* configurationAuthSettings = [[self configuration] authSettings]; for (NSString *auth in authSettings) { - NSDictionary *authSetting = [config authSettings][auth]; + NSDictionary *authSetting = configurationAuthSettings[auth]; if(!authSetting) { // auth setting is set only if the key is non-empty continue; } @@ -472,7 +470,7 @@ static NSString * {{classPrefix}}__fileNameForResponse(NSURLResponse *response) - (AFSecurityPolicy *) customSecurityPolicy { AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone]; - {{classPrefix}}Configuration *config = [{{classPrefix}}Configuration sharedConfig]; + {{classPrefix}}Configuration *config = [self configuration]; if (config.sslCaCert) { NSData *certData = [NSData dataWithContentsOfFile:config.sslCaCert]; @@ -490,4 +488,8 @@ static NSString * {{classPrefix}}__fileNameForResponse(NSURLResponse *response) return securityPolicy; } +- ({{classPrefix}}Configuration*) configuration { + return [{{classPrefix}}Configuration sharedConfig]; +} + @end diff --git a/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache b/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache index f4a5acdefb1a..db7df9b34076 100644 --- a/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache @@ -176,5 +176,12 @@ extern NSString *const {{classPrefix}}ResponseObjectErrorKey; */ - (AFSecurityPolicy *) customSecurityPolicy; +/** + * {{classPrefix}}Configuration return sharedConfig + * + * @return {{classPrefix}}Configuration + */ +- ({{classPrefix}}Configuration*) configuration; + @end diff --git a/modules/swagger-codegen/src/main/resources/objc/Configuration-body.mustache b/modules/swagger-codegen/src/main/resources/objc/Configuration-body.mustache index 99708408d4ec..e37551bf8a1c 100644 --- a/modules/swagger-codegen/src/main/resources/objc/Configuration-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/Configuration-body.mustache @@ -2,8 +2,9 @@ @interface {{classPrefix}}Configuration () -@property (readwrite, nonatomic, strong) NSMutableDictionary *mutableApiKey; -@property (readwrite, nonatomic, strong) NSMutableDictionary *mutableApiKeyPrefix; +@property (nonatomic, strong) NSMutableDictionary *mutableDefaultHeaders; +@property (nonatomic, strong) NSMutableDictionary *mutableApiKey; +@property (nonatomic, strong) NSMutableDictionary *mutableApiKeyPrefix; @end @@ -33,6 +34,7 @@ self.verifySSL = YES; self.mutableApiKey = [NSMutableDictionary dictionary]; self.mutableApiKeyPrefix = [NSMutableDictionary dictionary]; + self.mutableDefaultHeaders = [NSMutableDictionary dictionary]; self.logger = [{{classPrefix}}Logger sharedLogger]; } return self; @@ -147,4 +149,26 @@ self.logger.enabled = debug; } + + +- (void)setDefaultHeaderValue:(NSString *)value forKey:(NSString *)key { + if(!value) { + [self.mutableDefaultHeaders removeObjectForKey:key]; + return; + } + self.mutableDefaultHeaders[key] = value; +} + +-(void) removeDefaultHeaderForKey:(NSString*)key { + [self.mutableDefaultHeaders removeObjectForKey:key]; +} + +- (NSString *)defaultHeaderForKey:(NSString *)key { + return self.mutableDefaultHeaders[key]; +} + +- (NSDictionary *)defaultHeaders { + return [self.mutableDefaultHeaders copy]; +} + @end diff --git a/modules/swagger-codegen/src/main/resources/objc/Configuration-header.mustache b/modules/swagger-codegen/src/main/resources/objc/Configuration-header.mustache index c00c7175d2a3..12807ca54110 100644 --- a/modules/swagger-codegen/src/main/resources/objc/Configuration-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/Configuration-header.mustache @@ -105,8 +105,6 @@ /** * Sets the prefix for API key * - * To remove a apiKeyPrefix for an identifier, just set the apiKeyPrefix to nil. - * * @param apiKeyPrefix API key prefix. * @param identifier API key identifier. */ @@ -139,4 +137,29 @@ */ - (NSDictionary *) authSettings; +/** +* Default headers for all services +*/ +@property (readonly, nonatomic, strong) NSDictionary *defaultHeaders; + +/** +* Removes header from defaultHeaders +* +* @param Header name. +*/ +-(void) removeDefaultHeaderForKey:(NSString*)key; + +/** +* Sets the header for key +* +* @param value Value for header name +* @param key Header name +*/ +-(void) setDefaultHeaderValue:(NSString*) value forKey:(NSString*)key; + +/** +* @param Header key name. +*/ +-(NSString*) defaultHeaderForKey:(NSString*)key; + @end diff --git a/modules/swagger-codegen/src/main/resources/objc/api-body.mustache b/modules/swagger-codegen/src/main/resources/objc/api-body.mustache index 31e8b872fd67..100d5419fd46 100644 --- a/modules/swagger-codegen/src/main/resources/objc/api-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/api-body.mustache @@ -118,13 +118,12 @@ NSInteger k{{classname}}MissingParamErrorCode = 234513; {{^collectionFormat}}queryParams[@"{{baseName}}"] = {{paramName}};{{/collectionFormat}} } {{/queryParams}} - NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; + NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.apiClient.configuration.defaultHeaders]; + [headerParams addEntriesFromDictionary:self.defaultHeaders]; {{#headerParams}} - if ({{paramName}} != nil) { headerParams[@"{{baseName}}"] = {{paramName}}; } - {{/headerParams}} // HTTP header `Accept` NSString *acceptHeader = [self.apiClient.sanitizer selectHeaderAccept:@[{{#produces}}@"{{mediaType}}"{{#hasMore}}, {{/hasMore}}{{/produces}}]]; diff --git a/samples/client/petstore/objc/README.md b/samples/client/petstore/objc/README.md index b5c37dd79459..2a4f857aa9ae 100644 --- a/samples/client/petstore/objc/README.md +++ b/samples/client/petstore/objc/README.md @@ -6,7 +6,7 @@ This ObjC package is automatically generated by the [Swagger Codegen](https://gi - API version: 1.0.0 - Package version: -- Build date: 2016-05-16T07:44:16.324+02:00 +- Build date: 2016-05-16T08:49:54.613+02:00 - Build package: class io.swagger.codegen.languages.ObjcClientCodegen ## Requirements diff --git a/samples/client/petstore/objc/SwaggerClient/Api/SWGPetApi.m b/samples/client/petstore/objc/SwaggerClient/Api/SWGPetApi.m index dfe39dc6e754..c2023d86f4a3 100644 --- a/samples/client/petstore/objc/SwaggerClient/Api/SWGPetApi.m +++ b/samples/client/petstore/objc/SwaggerClient/Api/SWGPetApi.m @@ -86,7 +86,8 @@ NSInteger kSWGPetApiMissingParamErrorCode = 234513; NSMutableDictionary *pathParams = [[NSMutableDictionary alloc] init]; NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; - NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; + NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.apiClient.configuration.defaultHeaders]; + [headerParams addEntriesFromDictionary:self.defaultHeaders]; // HTTP header `Accept` NSString *acceptHeader = [self.apiClient.sanitizer selectHeaderAccept:@[@"application/json", @"application/xml"]]; if(acceptHeader.length > 0) { @@ -161,12 +162,11 @@ NSInteger kSWGPetApiMissingParamErrorCode = 234513; } NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; - NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; - + NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.apiClient.configuration.defaultHeaders]; + [headerParams addEntriesFromDictionary:self.defaultHeaders]; if (apiKey != nil) { headerParams[@"api_key"] = apiKey; } - // HTTP header `Accept` NSString *acceptHeader = [self.apiClient.sanitizer selectHeaderAccept:@[@"application/json", @"application/xml"]]; if(acceptHeader.length > 0) { @@ -227,7 +227,8 @@ NSInteger kSWGPetApiMissingParamErrorCode = 234513; queryParams[@"status"] = [[SWGQueryParamCollection alloc] initWithValuesAndFormat: status format: @"multi"]; } - NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; + NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.apiClient.configuration.defaultHeaders]; + [headerParams addEntriesFromDictionary:self.defaultHeaders]; // HTTP header `Accept` NSString *acceptHeader = [self.apiClient.sanitizer selectHeaderAccept:@[@"application/json", @"application/xml"]]; if(acceptHeader.length > 0) { @@ -288,7 +289,8 @@ NSInteger kSWGPetApiMissingParamErrorCode = 234513; queryParams[@"tags"] = [[SWGQueryParamCollection alloc] initWithValuesAndFormat: tags format: @"multi"]; } - NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; + NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.apiClient.configuration.defaultHeaders]; + [headerParams addEntriesFromDictionary:self.defaultHeaders]; // HTTP header `Accept` NSString *acceptHeader = [self.apiClient.sanitizer selectHeaderAccept:@[@"application/json", @"application/xml"]]; if(acceptHeader.length > 0) { @@ -359,7 +361,8 @@ NSInteger kSWGPetApiMissingParamErrorCode = 234513; } NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; - NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; + NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.apiClient.configuration.defaultHeaders]; + [headerParams addEntriesFromDictionary:self.defaultHeaders]; // HTTP header `Accept` NSString *acceptHeader = [self.apiClient.sanitizer selectHeaderAccept:@[@"application/json", @"application/xml"]]; if(acceptHeader.length > 0) { @@ -416,7 +419,8 @@ NSInteger kSWGPetApiMissingParamErrorCode = 234513; NSMutableDictionary *pathParams = [[NSMutableDictionary alloc] init]; NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; - NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; + NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.apiClient.configuration.defaultHeaders]; + [headerParams addEntriesFromDictionary:self.defaultHeaders]; // HTTP header `Accept` NSString *acceptHeader = [self.apiClient.sanitizer selectHeaderAccept:@[@"application/json", @"application/xml"]]; if(acceptHeader.length > 0) { @@ -494,7 +498,8 @@ NSInteger kSWGPetApiMissingParamErrorCode = 234513; } NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; - NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; + NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.apiClient.configuration.defaultHeaders]; + [headerParams addEntriesFromDictionary:self.defaultHeaders]; // HTTP header `Accept` NSString *acceptHeader = [self.apiClient.sanitizer selectHeaderAccept:@[@"application/json", @"application/xml"]]; if(acceptHeader.length > 0) { @@ -577,7 +582,8 @@ NSInteger kSWGPetApiMissingParamErrorCode = 234513; } NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; - NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; + NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.apiClient.configuration.defaultHeaders]; + [headerParams addEntriesFromDictionary:self.defaultHeaders]; // HTTP header `Accept` NSString *acceptHeader = [self.apiClient.sanitizer selectHeaderAccept:@[@"application/json", @"application/xml"]]; if(acceptHeader.length > 0) { diff --git a/samples/client/petstore/objc/SwaggerClient/Api/SWGStoreApi.m b/samples/client/petstore/objc/SwaggerClient/Api/SWGStoreApi.m index f707b8a21998..0b48e55b49af 100644 --- a/samples/client/petstore/objc/SwaggerClient/Api/SWGStoreApi.m +++ b/samples/client/petstore/objc/SwaggerClient/Api/SWGStoreApi.m @@ -100,7 +100,8 @@ NSInteger kSWGStoreApiMissingParamErrorCode = 234513; } NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; - NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; + NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.apiClient.configuration.defaultHeaders]; + [headerParams addEntriesFromDictionary:self.defaultHeaders]; // HTTP header `Accept` NSString *acceptHeader = [self.apiClient.sanitizer selectHeaderAccept:@[@"application/json", @"application/xml"]]; if(acceptHeader.length > 0) { @@ -155,7 +156,8 @@ NSInteger kSWGStoreApiMissingParamErrorCode = 234513; NSMutableDictionary *pathParams = [[NSMutableDictionary alloc] init]; NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; - NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; + NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.apiClient.configuration.defaultHeaders]; + [headerParams addEntriesFromDictionary:self.defaultHeaders]; // HTTP header `Accept` NSString *acceptHeader = [self.apiClient.sanitizer selectHeaderAccept:@[@"application/json", @"application/xml"]]; if(acceptHeader.length > 0) { @@ -226,7 +228,8 @@ NSInteger kSWGStoreApiMissingParamErrorCode = 234513; } NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; - NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; + NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.apiClient.configuration.defaultHeaders]; + [headerParams addEntriesFromDictionary:self.defaultHeaders]; // HTTP header `Accept` NSString *acceptHeader = [self.apiClient.sanitizer selectHeaderAccept:@[@"application/json", @"application/xml"]]; if(acceptHeader.length > 0) { @@ -283,7 +286,8 @@ NSInteger kSWGStoreApiMissingParamErrorCode = 234513; NSMutableDictionary *pathParams = [[NSMutableDictionary alloc] init]; NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; - NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; + NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.apiClient.configuration.defaultHeaders]; + [headerParams addEntriesFromDictionary:self.defaultHeaders]; // HTTP header `Accept` NSString *acceptHeader = [self.apiClient.sanitizer selectHeaderAccept:@[@"application/json", @"application/xml"]]; if(acceptHeader.length > 0) { diff --git a/samples/client/petstore/objc/SwaggerClient/Api/SWGUserApi.m b/samples/client/petstore/objc/SwaggerClient/Api/SWGUserApi.m index 483da7c88878..5644d8c09ae1 100644 --- a/samples/client/petstore/objc/SwaggerClient/Api/SWGUserApi.m +++ b/samples/client/petstore/objc/SwaggerClient/Api/SWGUserApi.m @@ -86,7 +86,8 @@ NSInteger kSWGUserApiMissingParamErrorCode = 234513; NSMutableDictionary *pathParams = [[NSMutableDictionary alloc] init]; NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; - NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; + NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.apiClient.configuration.defaultHeaders]; + [headerParams addEntriesFromDictionary:self.defaultHeaders]; // HTTP header `Accept` NSString *acceptHeader = [self.apiClient.sanitizer selectHeaderAccept:@[@"application/json", @"application/xml"]]; if(acceptHeader.length > 0) { @@ -144,7 +145,8 @@ NSInteger kSWGUserApiMissingParamErrorCode = 234513; NSMutableDictionary *pathParams = [[NSMutableDictionary alloc] init]; NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; - NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; + NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.apiClient.configuration.defaultHeaders]; + [headerParams addEntriesFromDictionary:self.defaultHeaders]; // HTTP header `Accept` NSString *acceptHeader = [self.apiClient.sanitizer selectHeaderAccept:@[@"application/json", @"application/xml"]]; if(acceptHeader.length > 0) { @@ -202,7 +204,8 @@ NSInteger kSWGUserApiMissingParamErrorCode = 234513; NSMutableDictionary *pathParams = [[NSMutableDictionary alloc] init]; NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; - NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; + NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.apiClient.configuration.defaultHeaders]; + [headerParams addEntriesFromDictionary:self.defaultHeaders]; // HTTP header `Accept` NSString *acceptHeader = [self.apiClient.sanitizer selectHeaderAccept:@[@"application/json", @"application/xml"]]; if(acceptHeader.length > 0) { @@ -274,7 +277,8 @@ NSInteger kSWGUserApiMissingParamErrorCode = 234513; } NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; - NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; + NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.apiClient.configuration.defaultHeaders]; + [headerParams addEntriesFromDictionary:self.defaultHeaders]; // HTTP header `Accept` NSString *acceptHeader = [self.apiClient.sanitizer selectHeaderAccept:@[@"application/json", @"application/xml"]]; if(acceptHeader.length > 0) { @@ -345,7 +349,8 @@ NSInteger kSWGUserApiMissingParamErrorCode = 234513; } NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; - NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; + NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.apiClient.configuration.defaultHeaders]; + [headerParams addEntriesFromDictionary:self.defaultHeaders]; // HTTP header `Accept` NSString *acceptHeader = [self.apiClient.sanitizer selectHeaderAccept:@[@"application/json", @"application/xml"]]; if(acceptHeader.length > 0) { @@ -411,7 +416,8 @@ NSInteger kSWGUserApiMissingParamErrorCode = 234513; if (password != nil) { queryParams[@"password"] = password; } - NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; + NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.apiClient.configuration.defaultHeaders]; + [headerParams addEntriesFromDictionary:self.defaultHeaders]; // HTTP header `Accept` NSString *acceptHeader = [self.apiClient.sanitizer selectHeaderAccept:@[@"application/json", @"application/xml"]]; if(acceptHeader.length > 0) { @@ -466,7 +472,8 @@ NSInteger kSWGUserApiMissingParamErrorCode = 234513; NSMutableDictionary *pathParams = [[NSMutableDictionary alloc] init]; NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; - NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; + NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.apiClient.configuration.defaultHeaders]; + [headerParams addEntriesFromDictionary:self.defaultHeaders]; // HTTP header `Accept` NSString *acceptHeader = [self.apiClient.sanitizer selectHeaderAccept:@[@"application/json", @"application/xml"]]; if(acceptHeader.length > 0) { @@ -540,7 +547,8 @@ NSInteger kSWGUserApiMissingParamErrorCode = 234513; } NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; - NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; + NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.apiClient.configuration.defaultHeaders]; + [headerParams addEntriesFromDictionary:self.defaultHeaders]; // HTTP header `Accept` NSString *acceptHeader = [self.apiClient.sanitizer selectHeaderAccept:@[@"application/json", @"application/xml"]]; if(acceptHeader.length > 0) { diff --git a/samples/client/petstore/objc/SwaggerClient/Core/SWGApiClient.h b/samples/client/petstore/objc/SwaggerClient/Core/SWGApiClient.h index fd5ed169abe7..bd35b341eff7 100644 --- a/samples/client/petstore/objc/SwaggerClient/Core/SWGApiClient.h +++ b/samples/client/petstore/objc/SwaggerClient/Core/SWGApiClient.h @@ -180,5 +180,12 @@ extern NSString *const SWGResponseObjectErrorKey; */ - (AFSecurityPolicy *) customSecurityPolicy; +/** + * SWGConfiguration return sharedConfig + * + * @return SWGConfiguration + */ +- (SWGConfiguration*) configuration; + @end diff --git a/samples/client/petstore/objc/SwaggerClient/Core/SWGApiClient.m b/samples/client/petstore/objc/SwaggerClient/Core/SWGApiClient.m index 4f0b218e853b..18c3233c3312 100644 --- a/samples/client/petstore/objc/SwaggerClient/Core/SWGApiClient.m +++ b/samples/client/petstore/objc/SwaggerClient/Core/SWGApiClient.m @@ -83,8 +83,7 @@ static NSString * SWG__fileNameForResponse(NSURLResponse *response) { reachabilityStatus = status; } -- (void)setHeaderValue:(NSString*) value - forKey:(NSString*) forKey { +- (void)setHeaderValue:(NSString*) value forKey:(NSString*) forKey { [self.requestSerializer setValue:value forHTTPHeaderField:forKey]; } @@ -221,8 +220,7 @@ static NSString * SWG__fileNameForResponse(NSURLResponse *response) { NSError *augmentedError = [error initWithDomain:error.domain code:error.code userInfo:userInfo]; completionBlock(nil, augmentedError); } - SWGConfiguration *config = [SWGConfiguration sharedConfig]; - NSString *directory = config.tempFolderPath ?: NSTemporaryDirectory(); + NSString *directory = [self configuration].tempFolderPath ?: NSTemporaryDirectory(); NSString * filename = SWG__fileNameForResponse(response); NSString *filepath = [directory stringByAppendingPathComponent:filename]; @@ -442,16 +440,16 @@ static NSString * SWG__fileNameForResponse(NSURLResponse *response) { queryParams:(NSDictionary *__autoreleasing *)querys WithAuthSettings:(NSArray *)authSettings { - if (!authSettings || [authSettings count] == 0) { + if ([authSettings count] == 0) { return; } NSMutableDictionary *headersWithAuth = [NSMutableDictionary dictionaryWithDictionary:*headers]; NSMutableDictionary *querysWithAuth = [NSMutableDictionary dictionaryWithDictionary:*querys]; - SWGConfiguration *config = [SWGConfiguration sharedConfig]; + NSDictionary* configurationAuthSettings = [[self configuration] authSettings]; for (NSString *auth in authSettings) { - NSDictionary *authSetting = [config authSettings][auth]; + NSDictionary *authSetting = configurationAuthSettings[auth]; if(!authSetting) { // auth setting is set only if the key is non-empty continue; } @@ -472,7 +470,7 @@ static NSString * SWG__fileNameForResponse(NSURLResponse *response) { - (AFSecurityPolicy *) customSecurityPolicy { AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone]; - SWGConfiguration *config = [SWGConfiguration sharedConfig]; + SWGConfiguration *config = [self configuration]; if (config.sslCaCert) { NSData *certData = [NSData dataWithContentsOfFile:config.sslCaCert]; @@ -490,4 +488,8 @@ static NSString * SWG__fileNameForResponse(NSURLResponse *response) { return securityPolicy; } +- (SWGConfiguration*) configuration { + return [SWGConfiguration sharedConfig]; +} + @end diff --git a/samples/client/petstore/objc/SwaggerClient/Core/SWGConfiguration.h b/samples/client/petstore/objc/SwaggerClient/Core/SWGConfiguration.h index 056175019a4b..0738a528171b 100644 --- a/samples/client/petstore/objc/SwaggerClient/Core/SWGConfiguration.h +++ b/samples/client/petstore/objc/SwaggerClient/Core/SWGConfiguration.h @@ -105,8 +105,6 @@ /** * Sets the prefix for API key * - * To remove a apiKeyPrefix for an identifier, just set the apiKeyPrefix to nil. - * * @param apiKeyPrefix API key prefix. * @param identifier API key identifier. */ @@ -139,4 +137,29 @@ */ - (NSDictionary *) authSettings; +/** +* Default headers for all services +*/ +@property (readonly, nonatomic, strong) NSDictionary *defaultHeaders; + +/** +* Removes header from defaultHeaders +* +* @param Header name. +*/ +-(void) removeDefaultHeaderForKey:(NSString*)key; + +/** +* Sets the header for key +* +* @param value Value for header name +* @param key Header name +*/ +-(void) setDefaultHeaderValue:(NSString*) value forKey:(NSString*)key; + +/** +* @param Header key name. +*/ +-(NSString*) defaultHeaderForKey:(NSString*)key; + @end diff --git a/samples/client/petstore/objc/SwaggerClient/Core/SWGConfiguration.m b/samples/client/petstore/objc/SwaggerClient/Core/SWGConfiguration.m index b2430daaecde..cd8d6e7aeef7 100644 --- a/samples/client/petstore/objc/SwaggerClient/Core/SWGConfiguration.m +++ b/samples/client/petstore/objc/SwaggerClient/Core/SWGConfiguration.m @@ -2,8 +2,9 @@ @interface SWGConfiguration () -@property (readwrite, nonatomic, strong) NSMutableDictionary *mutableApiKey; -@property (readwrite, nonatomic, strong) NSMutableDictionary *mutableApiKeyPrefix; +@property (nonatomic, strong) NSMutableDictionary *mutableDefaultHeaders; +@property (nonatomic, strong) NSMutableDictionary *mutableApiKey; +@property (nonatomic, strong) NSMutableDictionary *mutableApiKeyPrefix; @end @@ -33,6 +34,7 @@ self.verifySSL = YES; self.mutableApiKey = [NSMutableDictionary dictionary]; self.mutableApiKeyPrefix = [NSMutableDictionary dictionary]; + self.mutableDefaultHeaders = [NSMutableDictionary dictionary]; self.logger = [SWGLogger sharedLogger]; } return self; @@ -132,4 +134,26 @@ self.logger.enabled = debug; } + + +- (void)setDefaultHeaderValue:(NSString *)value forKey:(NSString *)key { + if(!value) { + [self.mutableDefaultHeaders removeObjectForKey:key]; + return; + } + self.mutableDefaultHeaders[key] = value; +} + +-(void) removeDefaultHeaderForKey:(NSString*)key { + [self.mutableDefaultHeaders removeObjectForKey:key]; +} + +- (NSString *)defaultHeaderForKey:(NSString *)key { + return self.mutableDefaultHeaders[key]; +} + +- (NSDictionary *)defaultHeaders { + return [self.mutableDefaultHeaders copy]; +} + @end From 36135134cb053f403795ce031dd31c6dd08fe916 Mon Sep 17 00:00:00 2001 From: Mateusz Mackowiak Date: Mon, 16 May 2016 09:19:36 +0200 Subject: [PATCH 4/4] [Objc] - Fixed undeclared selector --- .../src/main/resources/objc/api-body.mustache | 2 +- samples/client/petstore/objc/README.md | 2 +- .../client/petstore/objc/SwaggerClient/Api/SWGPetApi.m | 8 ++++---- .../client/petstore/objc/SwaggerClient/Api/SWGStoreApi.m | 4 ++-- .../client/petstore/objc/SwaggerClient/Api/SWGUserApi.m | 6 +++--- .../objc/SwaggerClientTests/Tests/SWGApiClientTest.m | 3 +++ 6 files changed, 14 insertions(+), 11 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/objc/api-body.mustache b/modules/swagger-codegen/src/main/resources/objc/api-body.mustache index 100d5419fd46..92dbf1d00651 100644 --- a/modules/swagger-codegen/src/main/resources/objc/api-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/api-body.mustache @@ -88,7 +88,7 @@ NSInteger k{{classname}}MissingParamErrorCode = 234513; if ({{paramName}} == nil) { NSParameterAssert({{paramName}}); if(handler) { - NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),NSStringFromSelector(@selector({{paramName}}))] }; + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),@"{{paramName}}"] }; NSError* error = [NSError errorWithDomain:k{{classname}}ErrorDomain code:k{{classname}}MissingParamErrorCode userInfo:userInfo]; handler({{#returnType}}nil, {{/returnType}}error); } diff --git a/samples/client/petstore/objc/README.md b/samples/client/petstore/objc/README.md index 2a4f857aa9ae..17dda837f126 100644 --- a/samples/client/petstore/objc/README.md +++ b/samples/client/petstore/objc/README.md @@ -6,7 +6,7 @@ This ObjC package is automatically generated by the [Swagger Codegen](https://gi - API version: 1.0.0 - Package version: -- Build date: 2016-05-16T08:49:54.613+02:00 +- Build date: 2016-05-16T09:18:48.757+02:00 - Build package: class io.swagger.codegen.languages.ObjcClientCodegen ## Requirements diff --git a/samples/client/petstore/objc/SwaggerClient/Api/SWGPetApi.m b/samples/client/petstore/objc/SwaggerClient/Api/SWGPetApi.m index c2023d86f4a3..409f5b866557 100644 --- a/samples/client/petstore/objc/SwaggerClient/Api/SWGPetApi.m +++ b/samples/client/petstore/objc/SwaggerClient/Api/SWGPetApi.m @@ -144,7 +144,7 @@ NSInteger kSWGPetApiMissingParamErrorCode = 234513; if (petId == nil) { NSParameterAssert(petId); if(handler) { - NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),NSStringFromSelector(@selector(petId))] }; + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),@"petId"] }; NSError* error = [NSError errorWithDomain:kSWGPetApiErrorDomain code:kSWGPetApiMissingParamErrorCode userInfo:userInfo]; handler(error); } @@ -343,7 +343,7 @@ NSInteger kSWGPetApiMissingParamErrorCode = 234513; if (petId == nil) { NSParameterAssert(petId); if(handler) { - NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),NSStringFromSelector(@selector(petId))] }; + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),@"petId"] }; NSError* error = [NSError errorWithDomain:kSWGPetApiErrorDomain code:kSWGPetApiMissingParamErrorCode userInfo:userInfo]; handler(nil, error); } @@ -480,7 +480,7 @@ NSInteger kSWGPetApiMissingParamErrorCode = 234513; if (petId == nil) { NSParameterAssert(petId); if(handler) { - NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),NSStringFromSelector(@selector(petId))] }; + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),@"petId"] }; NSError* error = [NSError errorWithDomain:kSWGPetApiErrorDomain code:kSWGPetApiMissingParamErrorCode userInfo:userInfo]; handler(error); } @@ -564,7 +564,7 @@ NSInteger kSWGPetApiMissingParamErrorCode = 234513; if (petId == nil) { NSParameterAssert(petId); if(handler) { - NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),NSStringFromSelector(@selector(petId))] }; + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),@"petId"] }; NSError* error = [NSError errorWithDomain:kSWGPetApiErrorDomain code:kSWGPetApiMissingParamErrorCode userInfo:userInfo]; handler(error); } diff --git a/samples/client/petstore/objc/SwaggerClient/Api/SWGStoreApi.m b/samples/client/petstore/objc/SwaggerClient/Api/SWGStoreApi.m index 0b48e55b49af..e5964200f208 100644 --- a/samples/client/petstore/objc/SwaggerClient/Api/SWGStoreApi.m +++ b/samples/client/petstore/objc/SwaggerClient/Api/SWGStoreApi.m @@ -82,7 +82,7 @@ NSInteger kSWGStoreApiMissingParamErrorCode = 234513; if (orderId == nil) { NSParameterAssert(orderId); if(handler) { - NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),NSStringFromSelector(@selector(orderId))] }; + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),@"orderId"] }; NSError* error = [NSError errorWithDomain:kSWGStoreApiErrorDomain code:kSWGStoreApiMissingParamErrorCode userInfo:userInfo]; handler(error); } @@ -210,7 +210,7 @@ NSInteger kSWGStoreApiMissingParamErrorCode = 234513; if (orderId == nil) { NSParameterAssert(orderId); if(handler) { - NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),NSStringFromSelector(@selector(orderId))] }; + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),@"orderId"] }; NSError* error = [NSError errorWithDomain:kSWGStoreApiErrorDomain code:kSWGStoreApiMissingParamErrorCode userInfo:userInfo]; handler(nil, error); } diff --git a/samples/client/petstore/objc/SwaggerClient/Api/SWGUserApi.m b/samples/client/petstore/objc/SwaggerClient/Api/SWGUserApi.m index 5644d8c09ae1..6ffb578ed76e 100644 --- a/samples/client/petstore/objc/SwaggerClient/Api/SWGUserApi.m +++ b/samples/client/petstore/objc/SwaggerClient/Api/SWGUserApi.m @@ -259,7 +259,7 @@ NSInteger kSWGUserApiMissingParamErrorCode = 234513; if (username == nil) { NSParameterAssert(username); if(handler) { - NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),NSStringFromSelector(@selector(username))] }; + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),@"username"] }; NSError* error = [NSError errorWithDomain:kSWGUserApiErrorDomain code:kSWGUserApiMissingParamErrorCode userInfo:userInfo]; handler(error); } @@ -331,7 +331,7 @@ NSInteger kSWGUserApiMissingParamErrorCode = 234513; if (username == nil) { NSParameterAssert(username); if(handler) { - NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),NSStringFromSelector(@selector(username))] }; + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),@"username"] }; NSError* error = [NSError errorWithDomain:kSWGUserApiErrorDomain code:kSWGUserApiMissingParamErrorCode userInfo:userInfo]; handler(nil, error); } @@ -529,7 +529,7 @@ NSInteger kSWGUserApiMissingParamErrorCode = 234513; if (username == nil) { NSParameterAssert(username); if(handler) { - NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),NSStringFromSelector(@selector(username))] }; + NSDictionary * userInfo = @{NSLocalizedDescriptionKey : [NSString stringWithFormat:NSLocalizedString(@"Missing required parameter '%@'", nil),@"username"] }; NSError* error = [NSError errorWithDomain:kSWGUserApiErrorDomain code:kSWGUserApiMissingParamErrorCode userInfo:userInfo]; handler(error); } diff --git a/samples/client/petstore/objc/SwaggerClientTests/Tests/SWGApiClientTest.m b/samples/client/petstore/objc/SwaggerClientTests/Tests/SWGApiClientTest.m index 205c3a290f8d..335e4f50bb2e 100644 --- a/samples/client/petstore/objc/SwaggerClientTests/Tests/SWGApiClientTest.m +++ b/samples/client/petstore/objc/SwaggerClientTests/Tests/SWGApiClientTest.m @@ -72,6 +72,9 @@ contentTypes = @[@"application/json;charset=utf-8", @"application/vnd.github+xml"]; XCTAssertEqualObjects([sanitizer selectHeaderContentType:contentTypes], @"application/json"); + contentTypes = @[@"application/json;charset=utf-8", @"application/vnd.github+xml"]; + XCTAssertEqualObjects([sanitizer selectHeaderContentType:contentTypes], @"application/json"); + contentTypes = @[@"application/vnd.github.v3.html+json", @"application/vnd.github+xml"]; XCTAssertEqualObjects([sanitizer selectHeaderContentType:contentTypes], @"application/json");