Skip to content

Commit 4f6d5f6

Browse files
committed
Merge pull request #568 from swagger-api/feature/objc-templates
Feature/objc templates
2 parents 98c8f86 + 99271e7 commit 4f6d5f6

File tree

19 files changed

+272
-178
lines changed

19 files changed

+272
-178
lines changed

bin/objc-petstore.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,6 @@ fi
2626

2727
# if you've executed sbt assembly previously it will use that instead.
2828
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
29-
ags="$@ generate -i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l objc -o samples/client/petstore/objc"
29+
ags="$@ generate -t modules/swagger-codegen/src/main/resources/objc -i modules/swagger-codegen/src/test/resources/2_0/petstore.json -l objc -o samples/client/petstore/objc"
3030

3131
java -DappName=PetstoreClient $JAVA_OPTS -jar $executable $ags

modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/ObjcClientCodegen.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ public ObjcClientCodegen() {
102102

103103
supportingFiles.add(new SupportingFile("SWGObject.h", sourceFolder, "SWGObject.h"));
104104
supportingFiles.add(new SupportingFile("SWGObject.m", sourceFolder, "SWGObject.m"));
105+
supportingFiles.add(new SupportingFile("SWGQueryParamCollection.h", sourceFolder, "SWGQueryParamCollection.h"));
106+
supportingFiles.add(new SupportingFile("SWGQueryParamCollection.m", sourceFolder, "SWGQueryParamCollection.m"));
105107
supportingFiles.add(new SupportingFile("SWGApiClient.h", sourceFolder, "SWGApiClient.h"));
106108
supportingFiles.add(new SupportingFile("SWGApiClient.m", sourceFolder, "SWGApiClient.m"));
107109
supportingFiles.add(new SupportingFile("SWGFile.h", sourceFolder, "SWGFile.h"));

modules/swagger-codegen/src/main/resources/objc/SWGApiClient.m

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#import "SWGApiClient.h"
22
#import "SWGFile.h"
3+
#import "SWGQueryParamCollection.h"
34

45
@implementation SWGApiClient
56

@@ -208,14 +209,45 @@ -(NSString*) pathWithQueryParamsToString:(NSString*) path
208209
if(counter == 0) separator = @"?";
209210
else separator = @"&";
210211
NSString * value;
211-
if([[queryParams valueForKey:key] isKindOfClass:[NSString class]]){
212-
value = [SWGApiClient escape:[queryParams valueForKey:key]];
212+
id queryParam = [queryParams valueForKey:key];
213+
if([queryParam isKindOfClass:[NSString class]]){
214+
[requestUrl appendString:[NSString stringWithFormat:@"%@%@=%@", separator,
215+
[SWGApiClient escape:key], [SWGApiClient escape:[queryParams valueForKey:key]]]];
216+
}
217+
else if([queryParam isKindOfClass:[SWGQueryParamCollection class]]){
218+
SWGQueryParamCollection * coll = (SWGQueryParamCollection*) queryParam;
219+
NSArray* values = [coll values];
220+
NSString* format = [coll format];
221+
222+
if([format isEqualToString:@"csv"]) {
223+
[requestUrl appendString:[NSString stringWithFormat:@"%@%@=%@", separator,
224+
[SWGApiClient escape:key], [NSString stringWithFormat:@"%@", [values componentsJoinedByString:@","]]]];
225+
226+
}
227+
else if([format isEqualToString:@"tsv"]) {
228+
[requestUrl appendString:[NSString stringWithFormat:@"%@%@=%@", separator,
229+
[SWGApiClient escape:key], [NSString stringWithFormat:@"%@", [values componentsJoinedByString:@"\t"]]]];
230+
231+
}
232+
else if([format isEqualToString:@"pipes"]) {
233+
[requestUrl appendString:[NSString stringWithFormat:@"%@%@=%@", separator,
234+
[SWGApiClient escape:key], [NSString stringWithFormat:@"%@", [values componentsJoinedByString:@"|"]]]];
235+
236+
}
237+
else if([format isEqualToString:@"multi"]) {
238+
for(id obj in values) {
239+
[requestUrl appendString:[NSString stringWithFormat:@"%@%@=%@", separator,
240+
[SWGApiClient escape:key], [NSString stringWithFormat:@"%@", obj]]];
241+
counter += 1;
242+
}
243+
244+
}
213245
}
214246
else {
215-
value = [NSString stringWithFormat:@"%@", [queryParams valueForKey:key]];
247+
[requestUrl appendString:[NSString stringWithFormat:@"%@%@=%@", separator,
248+
[SWGApiClient escape:key], [NSString stringWithFormat:@"%@", [queryParams valueForKey:key]]]];
216249
}
217-
[requestUrl appendString:[NSString stringWithFormat:@"%@%@=%@", separator,
218-
[SWGApiClient escape:key], value]];
250+
219251
counter += 1;
220252
}
221253
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
@interface SWGQueryParamCollection : NSObject
2+
3+
@property(nonatomic, readonly) NSArray* values;
4+
@property(nonatomic, readonly) NSString* format;
5+
6+
- (id) initWithValuesAndFormat: (NSArray*) values
7+
format: (NSString*) format;
8+
9+
@end
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#import "SWGQueryParamCollection.h"
2+
3+
@implementation SWGQueryParamCollection
4+
5+
@synthesize values = _values;
6+
@synthesize format = _format;
7+
8+
- (id) initWithValuesAndFormat: (NSArray*) values
9+
format: (NSString*) format {
10+
_values = values;
11+
_format = format;
12+
13+
return self;
14+
}
15+
16+
@end

modules/swagger-codegen/src/main/resources/objc/api-body.mustache

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{{#operations}}
22
#import "{{classname}}.h"
33
#import "SWGFile.h"
4+
#import "SWGQueryParamCollection.h"
45
#import "SWGApiClient.h"
56
{{#imports}}#import "{{import}}.h"
67
{{/imports}}
@@ -71,8 +72,12 @@ static NSString * basePath = @"{{basePath}}";
7172
NSString* responseContentType = @"application/json";
7273

7374
NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init];
74-
{{#queryParams}}if({{paramName}} != nil)
75-
queryParams[@"{{baseName}}"] = {{paramName}};
75+
{{#queryParams}}if({{paramName}} != nil) {
76+
{{#collectionFormat}}
77+
queryParams[@"{{baseName}}"] = [[SWGQueryParamCollection alloc] initWithValuesAndFormat: {{baseName}} format: @"{{collectionFormat}}"];
78+
{{/collectionFormat}}
79+
{{^collectionFormat}}queryParams[@"{{baseName}}"] = {{paramName}};{{/collectionFormat}}
80+
}
7681
{{/queryParams}}
7782
NSMutableDictionary* headerParams = [[NSMutableDictionary alloc] init];
7883
{{#headerParams}}if({{paramName}} != nil)

modules/swagger-codegen/src/main/resources/objc/api-header.mustache

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,9 @@
1616
/**
1717

1818
{{{summary}}}
19-
{{#notes}}
20-
{{{notes}}}
21-
{{/notes}}
19+
{{#notes}}{{{notes}}}{{/notes}}
2220

23-
{{#allParams}}
24-
@param {{paramName}} {{description}}
21+
{{#allParams}}@param {{paramName}} {{description}}
2522
{{/allParams}}
2623

2724
return type: {{returnType}}

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,8 +277,8 @@
277277
</plugins>
278278
</build>
279279
</profile>
280+
<!-- Samples -->
280281
<profile>
281-
<!-- Samples -->
282282
<id>java-client</id>
283283
<activation>
284284
<property>

samples/client/petstore/objc/PetstoreClient/PetstoreClient.xcodeproj/project.pbxproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
EA6699BE1811D2FB00A70D03 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA66999D1811D2FA00A70D03 /* UIKit.framework */; };
2424
EA6699C61811D2FB00A70D03 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = EA6699C41811D2FB00A70D03 /* InfoPlist.strings */; };
2525
EA6699C81811D2FB00A70D03 /* PetApiTest.m in Sources */ = {isa = PBXBuildFile; fileRef = EA6699C71811D2FB00A70D03 /* PetApiTest.m */; };
26+
EA8B8AA41AC6683700638FBB /* SWGQueryParamCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = EA8B8AA31AC6683700638FBB /* SWGQueryParamCollection.m */; };
2627
EA8CD3ED1AC2763600C47D0B /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA8CD3EC1AC2763600C47D0B /* SenTestingKit.framework */; };
2728
EAEA85E41811D3AE00F06E69 /* SWGApiClient.m in Sources */ = {isa = PBXBuildFile; fileRef = EAEA85CD1811D3AE00F06E69 /* SWGApiClient.m */; };
2829
EAEA85E51811D3AE00F06E69 /* SWGCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = EAEA85CF1811D3AE00F06E69 /* SWGCategory.m */; };
@@ -75,6 +76,8 @@
7576
EA6699C31811D2FB00A70D03 /* PetstoreClientTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "PetstoreClientTests-Info.plist"; sourceTree = "<group>"; };
7677
EA6699C51811D2FB00A70D03 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
7778
EA6699C71811D2FB00A70D03 /* PetApiTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PetApiTest.m; sourceTree = "<group>"; };
79+
EA8B8AA21AC6683700638FBB /* SWGQueryParamCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGQueryParamCollection.h; sourceTree = "<group>"; };
80+
EA8B8AA31AC6683700638FBB /* SWGQueryParamCollection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGQueryParamCollection.m; sourceTree = "<group>"; };
7881
EA8CD3EB1AC274BE00C47D0B /* PetApiTest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PetApiTest.h; sourceTree = "<group>"; };
7982
EA8CD3EC1AC2763600C47D0B /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; };
8083
EAEA85CC1811D3AE00F06E69 /* SWGApiClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGApiClient.h; sourceTree = "<group>"; };
@@ -227,6 +230,8 @@
227230
EAEA85CB1811D3AE00F06E69 /* client */ = {
228231
isa = PBXGroup;
229232
children = (
233+
EA8B8AA21AC6683700638FBB /* SWGQueryParamCollection.h */,
234+
EA8B8AA31AC6683700638FBB /* SWGQueryParamCollection.m */,
230235
EAFBEABC1A92C42700A27431 /* SWGApiResponse.h */,
231236
EAFBEABD1A92C42700A27431 /* SWGApiResponse.m */,
232237
EAEA85CC1811D3AE00F06E69 /* SWGApiClient.h */,
@@ -407,6 +412,7 @@
407412
EAEA85EC1811D3AE00F06E69 /* SWGStoreApi.m in Sources */,
408413
EAEA85E91811D3AE00F06E69 /* SWGOrder.m in Sources */,
409414
EAEA85E81811D3AE00F06E69 /* SWGObject.m in Sources */,
415+
EA8B8AA41AC6683700638FBB /* SWGQueryParamCollection.m in Sources */,
410416
EAEA85E71811D3AE00F06E69 /* SWGFile.m in Sources */,
411417
);
412418
runOnlyForDeploymentPostprocessing = 0;

0 commit comments

Comments
 (0)