Skip to content

Commit 8cc7bef

Browse files
4brunuwing328
authored andcommitted
Fix enum encodable (#4594)
1 parent df682ab commit 8cc7bef

22 files changed

Lines changed: 226 additions & 166 deletions

File tree

modules/openapi-generator/src/main/resources/swift4/Extensions.mustache

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ extension String: JSONEncodable {
3535
func encodeToJSON() -> Any { return self as Any }
3636
}
3737

38+
extension RawRepresentable where RawValue: JSONEncodable {
39+
func encodeToJSON() -> Any { return self.rawValue as Any }
40+
}
41+
3842
private func encodeIfPossible<T>(_ object: T) -> Any {
3943
if let encodableObject = object as? JSONEncodable {
4044
return encodableObject.encodeToJSON()
@@ -84,6 +88,12 @@ extension Date: JSONEncodable {
8488
}
8589
}
8690

91+
extension URL: JSONEncodable {
92+
func encodeToJSON() -> Any {
93+
return self
94+
}
95+
}
96+
8797
extension UUID: JSONEncodable {
8898
func encodeToJSON() -> Any {
8999
return self.uuidString
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
"{{baseName}}": {{paramName}}{{^isEnum}}{{#isInteger}}{{^required}}?{{/required}}.encodeToJSON(){{/isInteger}}{{#isLong}}{{^required}}?{{/required}}.encodeToJSON(){{/isLong}}{{/isEnum}}{{#isEnum}}{{^isContainer}}{{^required}}?{{/required}}.rawValue{{/isContainer}}{{/isEnum}}{{#isDate}}{{^required}}?{{/required}}.encodeToJSON(){{/isDate}}{{#isDateTime}}{{^required}}?{{/required}}.encodeToJSON(){{/isDateTime}}
1+
"{{baseName}}": {{paramName}}{{^required}}?{{/required}}.encodeToJSON()

samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ open class FakeAPI {
186186

187187
var url = URLComponents(string: URLString)
188188
url?.queryItems = APIHelper.mapValuesToQueryItems([
189-
"query": query
189+
"query": query.encodeToJSON()
190190
])
191191

192192
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
@@ -284,17 +284,17 @@ open class FakeAPI {
284284
"integer": integer?.encodeToJSON(),
285285
"int32": int32?.encodeToJSON(),
286286
"int64": int64?.encodeToJSON(),
287-
"number": number,
288-
"float": float,
289-
"double": double,
290-
"string": string,
291-
"pattern_without_delimiter": patternWithoutDelimiter,
292-
"byte": byte,
293-
"binary": binary,
287+
"number": number.encodeToJSON(),
288+
"float": float?.encodeToJSON(),
289+
"double": double.encodeToJSON(),
290+
"string": string?.encodeToJSON(),
291+
"pattern_without_delimiter": patternWithoutDelimiter.encodeToJSON(),
292+
"byte": byte.encodeToJSON(),
293+
"binary": binary?.encodeToJSON(),
294294
"date": date?.encodeToJSON(),
295295
"dateTime": dateTime?.encodeToJSON(),
296-
"password": password,
297-
"callback": callback
296+
"password": password?.encodeToJSON(),
297+
"callback": callback?.encodeToJSON()
298298
]
299299

300300
let nonNullParameters = APIHelper.rejectNil(formParams)
@@ -415,23 +415,23 @@ open class FakeAPI {
415415
let path = "/fake"
416416
let URLString = PetstoreClientAPI.basePath + path
417417
let formParams: [String: Any?] = [
418-
"enum_form_string_array": enumFormStringArray,
419-
"enum_form_string": enumFormString?.rawValue
418+
"enum_form_string_array": enumFormStringArray?.encodeToJSON(),
419+
"enum_form_string": enumFormString?.encodeToJSON()
420420
]
421421

422422
let nonNullParameters = APIHelper.rejectNil(formParams)
423423
let parameters = APIHelper.convertBoolToString(nonNullParameters)
424424

425425
var url = URLComponents(string: URLString)
426426
url?.queryItems = APIHelper.mapValuesToQueryItems([
427-
"enum_query_string_array": enumQueryStringArray,
428-
"enum_query_string": enumQueryString?.rawValue,
429-
"enum_query_integer": enumQueryInteger?.rawValue,
430-
"enum_query_double": enumQueryDouble?.rawValue
427+
"enum_query_string_array": enumQueryStringArray?.encodeToJSON(),
428+
"enum_query_string": enumQueryString?.encodeToJSON(),
429+
"enum_query_integer": enumQueryInteger?.encodeToJSON(),
430+
"enum_query_double": enumQueryDouble?.encodeToJSON()
431431
])
432432
let nillableHeaders: [String: Any?] = [
433-
"enum_header_string_array": enumHeaderStringArray,
434-
"enum_header_string": enumHeaderString?.rawValue
433+
"enum_header_string_array": enumHeaderStringArray?.encodeToJSON(),
434+
"enum_header_string": enumHeaderString?.encodeToJSON()
435435
]
436436
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
437437

@@ -486,8 +486,8 @@ open class FakeAPI {
486486
"int64_group": int64Group?.encodeToJSON()
487487
])
488488
let nillableHeaders: [String: Any?] = [
489-
"required_boolean_group": requiredBooleanGroup,
490-
"boolean_group": booleanGroup
489+
"required_boolean_group": requiredBooleanGroup.encodeToJSON(),
490+
"boolean_group": booleanGroup?.encodeToJSON()
491491
]
492492
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
493493

@@ -558,8 +558,8 @@ open class FakeAPI {
558558
let path = "/fake/jsonFormData"
559559
let URLString = PetstoreClientAPI.basePath + path
560560
let formParams: [String: Any?] = [
561-
"param": param,
562-
"param2": param2
561+
"param": param.encodeToJSON(),
562+
"param2": param2.encodeToJSON()
563563
]
564564

565565
let nonNullParameters = APIHelper.rejectNil(formParams)

samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ open class PetAPI {
8282

8383
let url = URLComponents(string: URLString)
8484
let nillableHeaders: [String: Any?] = [
85-
"api_key": apiKey
85+
"api_key": apiKey?.encodeToJSON()
8686
]
8787
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
8888

@@ -129,7 +129,7 @@ open class PetAPI {
129129

130130
var url = URLComponents(string: URLString)
131131
url?.queryItems = APIHelper.mapValuesToQueryItems([
132-
"status": status
132+
"status": status.encodeToJSON()
133133
])
134134

135135
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
@@ -166,7 +166,7 @@ open class PetAPI {
166166

167167
var url = URLComponents(string: URLString)
168168
url?.queryItems = APIHelper.mapValuesToQueryItems([
169-
"tags": tags
169+
"tags": tags.encodeToJSON()
170170
])
171171

172172
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
@@ -284,8 +284,8 @@ open class PetAPI {
284284
path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil)
285285
let URLString = PetstoreClientAPI.basePath + path
286286
let formParams: [String: Any?] = [
287-
"name": name,
288-
"status": status
287+
"name": name?.encodeToJSON(),
288+
"status": status?.encodeToJSON()
289289
]
290290

291291
let nonNullParameters = APIHelper.rejectNil(formParams)
@@ -330,8 +330,8 @@ open class PetAPI {
330330
path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil)
331331
let URLString = PetstoreClientAPI.basePath + path
332332
let formParams: [String: Any?] = [
333-
"additionalMetadata": additionalMetadata,
334-
"file": file
333+
"additionalMetadata": additionalMetadata?.encodeToJSON(),
334+
"file": file?.encodeToJSON()
335335
]
336336

337337
let nonNullParameters = APIHelper.rejectNil(formParams)
@@ -376,8 +376,8 @@ open class PetAPI {
376376
path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil)
377377
let URLString = PetstoreClientAPI.basePath + path
378378
let formParams: [String: Any?] = [
379-
"additionalMetadata": additionalMetadata,
380-
"requiredFile": requiredFile
379+
"additionalMetadata": additionalMetadata?.encodeToJSON(),
380+
"requiredFile": requiredFile.encodeToJSON()
381381
]
382382

383383
let nonNullParameters = APIHelper.rejectNil(formParams)

samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,8 @@ open class UserAPI {
210210

211211
var url = URLComponents(string: URLString)
212212
url?.queryItems = APIHelper.mapValuesToQueryItems([
213-
"username": username,
214-
"password": password
213+
"username": username.encodeToJSON(),
214+
"password": password.encodeToJSON()
215215
])
216216

217217
let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()

samples/client/petstore/swift4/default/PetstoreClient/Classes/OpenAPIs/Extensions.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ extension String: JSONEncodable {
3434
func encodeToJSON() -> Any { return self as Any }
3535
}
3636

37+
extension RawRepresentable where RawValue: JSONEncodable {
38+
func encodeToJSON() -> Any { return self.rawValue as Any }
39+
}
40+
3741
private func encodeIfPossible<T>(_ object: T) -> Any {
3842
if let encodableObject = object as? JSONEncodable {
3943
return encodableObject.encodeToJSON()
@@ -83,6 +87,12 @@ extension Date: JSONEncodable {
8387
}
8488
}
8589

90+
extension URL: JSONEncodable {
91+
func encodeToJSON() -> Any {
92+
return self
93+
}
94+
}
95+
8696
extension UUID: JSONEncodable {
8797
func encodeToJSON() -> Any {
8898
return self.uuidString

samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/FakeAPI.swift

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ open class FakeAPI {
186186

187187
var url = URLComponents(string: URLString)
188188
url?.queryItems = APIHelper.mapValuesToQueryItems([
189-
"query": query
189+
"query": query.encodeToJSON()
190190
])
191191

192192
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
@@ -284,17 +284,17 @@ open class FakeAPI {
284284
"integer": integer?.encodeToJSON(),
285285
"int32": int32?.encodeToJSON(),
286286
"int64": int64?.encodeToJSON(),
287-
"number": number,
288-
"float": float,
289-
"double": double,
290-
"string": string,
291-
"pattern_without_delimiter": patternWithoutDelimiter,
292-
"byte": byte,
293-
"binary": binary,
287+
"number": number.encodeToJSON(),
288+
"float": float?.encodeToJSON(),
289+
"double": double.encodeToJSON(),
290+
"string": string?.encodeToJSON(),
291+
"pattern_without_delimiter": patternWithoutDelimiter.encodeToJSON(),
292+
"byte": byte.encodeToJSON(),
293+
"binary": binary?.encodeToJSON(),
294294
"date": date?.encodeToJSON(),
295295
"dateTime": dateTime?.encodeToJSON(),
296-
"password": password,
297-
"callback": callback
296+
"password": password?.encodeToJSON(),
297+
"callback": callback?.encodeToJSON()
298298
]
299299

300300
let nonNullParameters = APIHelper.rejectNil(formParams)
@@ -415,23 +415,23 @@ open class FakeAPI {
415415
let path = "/fake"
416416
let URLString = PetstoreClientAPI.basePath + path
417417
let formParams: [String: Any?] = [
418-
"enum_form_string_array": enumFormStringArray,
419-
"enum_form_string": enumFormString?.rawValue
418+
"enum_form_string_array": enumFormStringArray?.encodeToJSON(),
419+
"enum_form_string": enumFormString?.encodeToJSON()
420420
]
421421

422422
let nonNullParameters = APIHelper.rejectNil(formParams)
423423
let parameters = APIHelper.convertBoolToString(nonNullParameters)
424424

425425
var url = URLComponents(string: URLString)
426426
url?.queryItems = APIHelper.mapValuesToQueryItems([
427-
"enum_query_string_array": enumQueryStringArray,
428-
"enum_query_string": enumQueryString?.rawValue,
429-
"enum_query_integer": enumQueryInteger?.rawValue,
430-
"enum_query_double": enumQueryDouble?.rawValue
427+
"enum_query_string_array": enumQueryStringArray?.encodeToJSON(),
428+
"enum_query_string": enumQueryString?.encodeToJSON(),
429+
"enum_query_integer": enumQueryInteger?.encodeToJSON(),
430+
"enum_query_double": enumQueryDouble?.encodeToJSON()
431431
])
432432
let nillableHeaders: [String: Any?] = [
433-
"enum_header_string_array": enumHeaderStringArray,
434-
"enum_header_string": enumHeaderString?.rawValue
433+
"enum_header_string_array": enumHeaderStringArray?.encodeToJSON(),
434+
"enum_header_string": enumHeaderString?.encodeToJSON()
435435
]
436436
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
437437

@@ -486,8 +486,8 @@ open class FakeAPI {
486486
"int64_group": int64Group?.encodeToJSON()
487487
])
488488
let nillableHeaders: [String: Any?] = [
489-
"required_boolean_group": requiredBooleanGroup,
490-
"boolean_group": booleanGroup
489+
"required_boolean_group": requiredBooleanGroup.encodeToJSON(),
490+
"boolean_group": booleanGroup?.encodeToJSON()
491491
]
492492
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
493493

@@ -558,8 +558,8 @@ open class FakeAPI {
558558
let path = "/fake/jsonFormData"
559559
let URLString = PetstoreClientAPI.basePath + path
560560
let formParams: [String: Any?] = [
561-
"param": param,
562-
"param2": param2
561+
"param": param.encodeToJSON(),
562+
"param2": param2.encodeToJSON()
563563
]
564564

565565
let nonNullParameters = APIHelper.rejectNil(formParams)

samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/PetAPI.swift

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ open class PetAPI {
8282

8383
let url = URLComponents(string: URLString)
8484
let nillableHeaders: [String: Any?] = [
85-
"api_key": apiKey
85+
"api_key": apiKey?.encodeToJSON()
8686
]
8787
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
8888

@@ -129,7 +129,7 @@ open class PetAPI {
129129

130130
var url = URLComponents(string: URLString)
131131
url?.queryItems = APIHelper.mapValuesToQueryItems([
132-
"status": status
132+
"status": status.encodeToJSON()
133133
])
134134

135135
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
@@ -166,7 +166,7 @@ open class PetAPI {
166166

167167
var url = URLComponents(string: URLString)
168168
url?.queryItems = APIHelper.mapValuesToQueryItems([
169-
"tags": tags
169+
"tags": tags.encodeToJSON()
170170
])
171171

172172
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
@@ -284,8 +284,8 @@ open class PetAPI {
284284
path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil)
285285
let URLString = PetstoreClientAPI.basePath + path
286286
let formParams: [String: Any?] = [
287-
"name": name,
288-
"status": status
287+
"name": name?.encodeToJSON(),
288+
"status": status?.encodeToJSON()
289289
]
290290

291291
let nonNullParameters = APIHelper.rejectNil(formParams)
@@ -330,8 +330,8 @@ open class PetAPI {
330330
path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil)
331331
let URLString = PetstoreClientAPI.basePath + path
332332
let formParams: [String: Any?] = [
333-
"additionalMetadata": additionalMetadata,
334-
"file": file
333+
"additionalMetadata": additionalMetadata?.encodeToJSON(),
334+
"file": file?.encodeToJSON()
335335
]
336336

337337
let nonNullParameters = APIHelper.rejectNil(formParams)
@@ -376,8 +376,8 @@ open class PetAPI {
376376
path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil)
377377
let URLString = PetstoreClientAPI.basePath + path
378378
let formParams: [String: Any?] = [
379-
"additionalMetadata": additionalMetadata,
380-
"requiredFile": requiredFile
379+
"additionalMetadata": additionalMetadata?.encodeToJSON(),
380+
"requiredFile": requiredFile.encodeToJSON()
381381
]
382382

383383
let nonNullParameters = APIHelper.rejectNil(formParams)

samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/APIs/UserAPI.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,8 @@ open class UserAPI {
210210

211211
var url = URLComponents(string: URLString)
212212
url?.queryItems = APIHelper.mapValuesToQueryItems([
213-
"username": username,
214-
"password": password
213+
"username": username.encodeToJSON(),
214+
"password": password.encodeToJSON()
215215
])
216216

217217
let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()

samples/client/petstore/swift4/objcCompatible/PetstoreClient/Classes/OpenAPIs/Extensions.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ extension String: JSONEncodable {
3434
func encodeToJSON() -> Any { return self as Any }
3535
}
3636

37+
extension RawRepresentable where RawValue: JSONEncodable {
38+
func encodeToJSON() -> Any { return self.rawValue as Any }
39+
}
40+
3741
private func encodeIfPossible<T>(_ object: T) -> Any {
3842
if let encodableObject = object as? JSONEncodable {
3943
return encodableObject.encodeToJSON()
@@ -83,6 +87,12 @@ extension Date: JSONEncodable {
8387
}
8488
}
8589

90+
extension URL: JSONEncodable {
91+
func encodeToJSON() -> Any {
92+
return self
93+
}
94+
}
95+
8696
extension UUID: JSONEncodable {
8797
func encodeToJSON() -> Any {
8898
return self.uuidString

0 commit comments

Comments
 (0)