Fix enum encodable (#4594)

This commit is contained in:
Bruno Coelho 2019-11-28 12:55:35 +00:00 committed by William Cheng
parent df682aba99
commit 8cc7befbf3
22 changed files with 226 additions and 166 deletions

View File

@ -35,6 +35,10 @@ extension String: JSONEncodable {
func encodeToJSON() -> Any { return self as Any }
}
extension RawRepresentable where RawValue: JSONEncodable {
func encodeToJSON() -> Any { return self.rawValue as Any }
}
private func encodeIfPossible<T>(_ object: T) -> Any {
if let encodableObject = object as? JSONEncodable {
return encodableObject.encodeToJSON()
@ -84,6 +88,12 @@ extension Date: JSONEncodable {
}
}
extension URL: JSONEncodable {
func encodeToJSON() -> Any {
return self
}
}
extension UUID: JSONEncodable {
func encodeToJSON() -> Any {
return self.uuidString

View File

@ -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}}
"{{baseName}}": {{paramName}}{{^required}}?{{/required}}.encodeToJSON()

View File

@ -186,7 +186,7 @@ open class FakeAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"query": query
"query": query.encodeToJSON()
])
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
@ -284,17 +284,17 @@ open class FakeAPI {
"integer": integer?.encodeToJSON(),
"int32": int32?.encodeToJSON(),
"int64": int64?.encodeToJSON(),
"number": number,
"float": float,
"double": double,
"string": string,
"pattern_without_delimiter": patternWithoutDelimiter,
"byte": byte,
"binary": binary,
"number": number.encodeToJSON(),
"float": float?.encodeToJSON(),
"double": double.encodeToJSON(),
"string": string?.encodeToJSON(),
"pattern_without_delimiter": patternWithoutDelimiter.encodeToJSON(),
"byte": byte.encodeToJSON(),
"binary": binary?.encodeToJSON(),
"date": date?.encodeToJSON(),
"dateTime": dateTime?.encodeToJSON(),
"password": password,
"callback": callback
"password": password?.encodeToJSON(),
"callback": callback?.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)
@ -415,8 +415,8 @@ open class FakeAPI {
let path = "/fake"
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"enum_form_string_array": enumFormStringArray,
"enum_form_string": enumFormString?.rawValue
"enum_form_string_array": enumFormStringArray?.encodeToJSON(),
"enum_form_string": enumFormString?.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)
@ -424,14 +424,14 @@ open class FakeAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"enum_query_string_array": enumQueryStringArray,
"enum_query_string": enumQueryString?.rawValue,
"enum_query_integer": enumQueryInteger?.rawValue,
"enum_query_double": enumQueryDouble?.rawValue
"enum_query_string_array": enumQueryStringArray?.encodeToJSON(),
"enum_query_string": enumQueryString?.encodeToJSON(),
"enum_query_integer": enumQueryInteger?.encodeToJSON(),
"enum_query_double": enumQueryDouble?.encodeToJSON()
])
let nillableHeaders: [String: Any?] = [
"enum_header_string_array": enumHeaderStringArray,
"enum_header_string": enumHeaderString?.rawValue
"enum_header_string_array": enumHeaderStringArray?.encodeToJSON(),
"enum_header_string": enumHeaderString?.encodeToJSON()
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
@ -486,8 +486,8 @@ open class FakeAPI {
"int64_group": int64Group?.encodeToJSON()
])
let nillableHeaders: [String: Any?] = [
"required_boolean_group": requiredBooleanGroup,
"boolean_group": booleanGroup
"required_boolean_group": requiredBooleanGroup.encodeToJSON(),
"boolean_group": booleanGroup?.encodeToJSON()
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
@ -558,8 +558,8 @@ open class FakeAPI {
let path = "/fake/jsonFormData"
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"param": param,
"param2": param2
"param": param.encodeToJSON(),
"param2": param2.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)

View File

@ -82,7 +82,7 @@ open class PetAPI {
let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"api_key": apiKey
"api_key": apiKey?.encodeToJSON()
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
@ -129,7 +129,7 @@ open class PetAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"status": status
"status": status.encodeToJSON()
])
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
@ -166,7 +166,7 @@ open class PetAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"tags": tags
"tags": tags.encodeToJSON()
])
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
@ -284,8 +284,8 @@ open class PetAPI {
path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil)
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"name": name,
"status": status
"name": name?.encodeToJSON(),
"status": status?.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)
@ -330,8 +330,8 @@ open class PetAPI {
path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil)
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata,
"file": file
"additionalMetadata": additionalMetadata?.encodeToJSON(),
"file": file?.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)
@ -376,8 +376,8 @@ open class PetAPI {
path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil)
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata,
"requiredFile": requiredFile
"additionalMetadata": additionalMetadata?.encodeToJSON(),
"requiredFile": requiredFile.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)

View File

@ -210,8 +210,8 @@ open class UserAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"username": username,
"password": password
"username": username.encodeToJSON(),
"password": password.encodeToJSON()
])
let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()

View File

@ -34,6 +34,10 @@ extension String: JSONEncodable {
func encodeToJSON() -> Any { return self as Any }
}
extension RawRepresentable where RawValue: JSONEncodable {
func encodeToJSON() -> Any { return self.rawValue as Any }
}
private func encodeIfPossible<T>(_ object: T) -> Any {
if let encodableObject = object as? JSONEncodable {
return encodableObject.encodeToJSON()
@ -83,6 +87,12 @@ extension Date: JSONEncodable {
}
}
extension URL: JSONEncodable {
func encodeToJSON() -> Any {
return self
}
}
extension UUID: JSONEncodable {
func encodeToJSON() -> Any {
return self.uuidString

View File

@ -186,7 +186,7 @@ open class FakeAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"query": query
"query": query.encodeToJSON()
])
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
@ -284,17 +284,17 @@ open class FakeAPI {
"integer": integer?.encodeToJSON(),
"int32": int32?.encodeToJSON(),
"int64": int64?.encodeToJSON(),
"number": number,
"float": float,
"double": double,
"string": string,
"pattern_without_delimiter": patternWithoutDelimiter,
"byte": byte,
"binary": binary,
"number": number.encodeToJSON(),
"float": float?.encodeToJSON(),
"double": double.encodeToJSON(),
"string": string?.encodeToJSON(),
"pattern_without_delimiter": patternWithoutDelimiter.encodeToJSON(),
"byte": byte.encodeToJSON(),
"binary": binary?.encodeToJSON(),
"date": date?.encodeToJSON(),
"dateTime": dateTime?.encodeToJSON(),
"password": password,
"callback": callback
"password": password?.encodeToJSON(),
"callback": callback?.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)
@ -415,8 +415,8 @@ open class FakeAPI {
let path = "/fake"
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"enum_form_string_array": enumFormStringArray,
"enum_form_string": enumFormString?.rawValue
"enum_form_string_array": enumFormStringArray?.encodeToJSON(),
"enum_form_string": enumFormString?.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)
@ -424,14 +424,14 @@ open class FakeAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"enum_query_string_array": enumQueryStringArray,
"enum_query_string": enumQueryString?.rawValue,
"enum_query_integer": enumQueryInteger?.rawValue,
"enum_query_double": enumQueryDouble?.rawValue
"enum_query_string_array": enumQueryStringArray?.encodeToJSON(),
"enum_query_string": enumQueryString?.encodeToJSON(),
"enum_query_integer": enumQueryInteger?.encodeToJSON(),
"enum_query_double": enumQueryDouble?.encodeToJSON()
])
let nillableHeaders: [String: Any?] = [
"enum_header_string_array": enumHeaderStringArray,
"enum_header_string": enumHeaderString?.rawValue
"enum_header_string_array": enumHeaderStringArray?.encodeToJSON(),
"enum_header_string": enumHeaderString?.encodeToJSON()
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
@ -486,8 +486,8 @@ open class FakeAPI {
"int64_group": int64Group?.encodeToJSON()
])
let nillableHeaders: [String: Any?] = [
"required_boolean_group": requiredBooleanGroup,
"boolean_group": booleanGroup
"required_boolean_group": requiredBooleanGroup.encodeToJSON(),
"boolean_group": booleanGroup?.encodeToJSON()
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
@ -558,8 +558,8 @@ open class FakeAPI {
let path = "/fake/jsonFormData"
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"param": param,
"param2": param2
"param": param.encodeToJSON(),
"param2": param2.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)

View File

@ -82,7 +82,7 @@ open class PetAPI {
let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"api_key": apiKey
"api_key": apiKey?.encodeToJSON()
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
@ -129,7 +129,7 @@ open class PetAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"status": status
"status": status.encodeToJSON()
])
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
@ -166,7 +166,7 @@ open class PetAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"tags": tags
"tags": tags.encodeToJSON()
])
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
@ -284,8 +284,8 @@ open class PetAPI {
path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil)
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"name": name,
"status": status
"name": name?.encodeToJSON(),
"status": status?.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)
@ -330,8 +330,8 @@ open class PetAPI {
path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil)
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata,
"file": file
"additionalMetadata": additionalMetadata?.encodeToJSON(),
"file": file?.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)
@ -376,8 +376,8 @@ open class PetAPI {
path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil)
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata,
"requiredFile": requiredFile
"additionalMetadata": additionalMetadata?.encodeToJSON(),
"requiredFile": requiredFile.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)

View File

@ -210,8 +210,8 @@ open class UserAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"username": username,
"password": password
"username": username.encodeToJSON(),
"password": password.encodeToJSON()
])
let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()

View File

@ -34,6 +34,10 @@ extension String: JSONEncodable {
func encodeToJSON() -> Any { return self as Any }
}
extension RawRepresentable where RawValue: JSONEncodable {
func encodeToJSON() -> Any { return self.rawValue as Any }
}
private func encodeIfPossible<T>(_ object: T) -> Any {
if let encodableObject = object as? JSONEncodable {
return encodableObject.encodeToJSON()
@ -83,6 +87,12 @@ extension Date: JSONEncodable {
}
}
extension URL: JSONEncodable {
func encodeToJSON() -> Any {
return self
}
}
extension UUID: JSONEncodable {
func encodeToJSON() -> Any {
return self.uuidString

View File

@ -223,7 +223,7 @@ open class FakeAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"query": query
"query": query.encodeToJSON()
])
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
@ -331,17 +331,17 @@ open class FakeAPI {
"integer": integer?.encodeToJSON(),
"int32": int32?.encodeToJSON(),
"int64": int64?.encodeToJSON(),
"number": number,
"float": float,
"double": double,
"string": string,
"pattern_without_delimiter": patternWithoutDelimiter,
"byte": byte,
"binary": binary,
"number": number.encodeToJSON(),
"float": float?.encodeToJSON(),
"double": double.encodeToJSON(),
"string": string?.encodeToJSON(),
"pattern_without_delimiter": patternWithoutDelimiter.encodeToJSON(),
"byte": byte.encodeToJSON(),
"binary": binary?.encodeToJSON(),
"date": date?.encodeToJSON(),
"dateTime": dateTime?.encodeToJSON(),
"password": password,
"callback": callback
"password": password?.encodeToJSON(),
"callback": callback?.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)
@ -464,8 +464,8 @@ open class FakeAPI {
let path = "/fake"
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"enum_form_string_array": enumFormStringArray,
"enum_form_string": enumFormString?.rawValue
"enum_form_string_array": enumFormStringArray?.encodeToJSON(),
"enum_form_string": enumFormString?.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)
@ -473,14 +473,14 @@ open class FakeAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"enum_query_string_array": enumQueryStringArray,
"enum_query_string": enumQueryString?.rawValue,
"enum_query_integer": enumQueryInteger?.rawValue,
"enum_query_double": enumQueryDouble?.rawValue
"enum_query_string_array": enumQueryStringArray?.encodeToJSON(),
"enum_query_string": enumQueryString?.encodeToJSON(),
"enum_query_integer": enumQueryInteger?.encodeToJSON(),
"enum_query_double": enumQueryDouble?.encodeToJSON()
])
let nillableHeaders: [String: Any?] = [
"enum_header_string_array": enumHeaderStringArray,
"enum_header_string": enumHeaderString?.rawValue
"enum_header_string_array": enumHeaderStringArray?.encodeToJSON(),
"enum_header_string": enumHeaderString?.encodeToJSON()
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
@ -537,8 +537,8 @@ open class FakeAPI {
"int64_group": int64Group?.encodeToJSON()
])
let nillableHeaders: [String: Any?] = [
"required_boolean_group": requiredBooleanGroup,
"boolean_group": booleanGroup
"required_boolean_group": requiredBooleanGroup.encodeToJSON(),
"boolean_group": booleanGroup?.encodeToJSON()
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
@ -613,8 +613,8 @@ open class FakeAPI {
let path = "/fake/jsonFormData"
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"param": param,
"param2": param2
"param": param.encodeToJSON(),
"param2": param2.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)

View File

@ -87,7 +87,7 @@ open class PetAPI {
let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"api_key": apiKey
"api_key": apiKey?.encodeToJSON()
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
@ -142,7 +142,7 @@ open class PetAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"status": status
"status": status.encodeToJSON()
])
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
@ -187,7 +187,7 @@ open class PetAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"tags": tags
"tags": tags.encodeToJSON()
])
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
@ -317,8 +317,8 @@ open class PetAPI {
path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil)
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"name": name,
"status": status
"name": name?.encodeToJSON(),
"status": status?.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)
@ -371,8 +371,8 @@ open class PetAPI {
path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil)
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata,
"file": file
"additionalMetadata": additionalMetadata?.encodeToJSON(),
"file": file?.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)
@ -425,8 +425,8 @@ open class PetAPI {
path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil)
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata,
"requiredFile": requiredFile
"additionalMetadata": additionalMetadata?.encodeToJSON(),
"requiredFile": requiredFile.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)

View File

@ -235,8 +235,8 @@ open class UserAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"username": username,
"password": password
"username": username.encodeToJSON(),
"password": password.encodeToJSON()
])
let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()

View File

@ -35,6 +35,10 @@ extension String: JSONEncodable {
func encodeToJSON() -> Any { return self as Any }
}
extension RawRepresentable where RawValue: JSONEncodable {
func encodeToJSON() -> Any { return self.rawValue as Any }
}
private func encodeIfPossible<T>(_ object: T) -> Any {
if let encodableObject = object as? JSONEncodable {
return encodableObject.encodeToJSON()
@ -84,6 +88,12 @@ extension Date: JSONEncodable {
}
}
extension URL: JSONEncodable {
func encodeToJSON() -> Any {
return self
}
}
extension UUID: JSONEncodable {
func encodeToJSON() -> Any {
return self.uuidString

View File

@ -235,7 +235,7 @@ open class FakeAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"query": query
"query": query.encodeToJSON()
])
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
@ -347,17 +347,17 @@ open class FakeAPI {
"integer": integer?.encodeToJSON(),
"int32": int32?.encodeToJSON(),
"int64": int64?.encodeToJSON(),
"number": number,
"float": float,
"double": double,
"string": string,
"pattern_without_delimiter": patternWithoutDelimiter,
"byte": byte,
"binary": binary,
"number": number.encodeToJSON(),
"float": float?.encodeToJSON(),
"double": double.encodeToJSON(),
"string": string?.encodeToJSON(),
"pattern_without_delimiter": patternWithoutDelimiter.encodeToJSON(),
"byte": byte.encodeToJSON(),
"binary": binary?.encodeToJSON(),
"date": date?.encodeToJSON(),
"dateTime": dateTime?.encodeToJSON(),
"password": password,
"callback": callback
"password": password?.encodeToJSON(),
"callback": callback?.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)
@ -482,8 +482,8 @@ open class FakeAPI {
let path = "/fake"
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"enum_form_string_array": enumFormStringArray,
"enum_form_string": enumFormString?.rawValue
"enum_form_string_array": enumFormStringArray?.encodeToJSON(),
"enum_form_string": enumFormString?.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)
@ -491,14 +491,14 @@ open class FakeAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"enum_query_string_array": enumQueryStringArray,
"enum_query_string": enumQueryString?.rawValue,
"enum_query_integer": enumQueryInteger?.rawValue,
"enum_query_double": enumQueryDouble?.rawValue
"enum_query_string_array": enumQueryStringArray?.encodeToJSON(),
"enum_query_string": enumQueryString?.encodeToJSON(),
"enum_query_integer": enumQueryInteger?.encodeToJSON(),
"enum_query_double": enumQueryDouble?.encodeToJSON()
])
let nillableHeaders: [String: Any?] = [
"enum_header_string_array": enumHeaderStringArray,
"enum_header_string": enumHeaderString?.rawValue
"enum_header_string_array": enumHeaderStringArray?.encodeToJSON(),
"enum_header_string": enumHeaderString?.encodeToJSON()
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
@ -557,8 +557,8 @@ open class FakeAPI {
"int64_group": int64Group?.encodeToJSON()
])
let nillableHeaders: [String: Any?] = [
"required_boolean_group": requiredBooleanGroup,
"boolean_group": booleanGroup
"required_boolean_group": requiredBooleanGroup.encodeToJSON(),
"boolean_group": booleanGroup?.encodeToJSON()
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
@ -637,8 +637,8 @@ open class FakeAPI {
let path = "/fake/jsonFormData"
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"param": param,
"param2": param2
"param": param.encodeToJSON(),
"param2": param2.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)

View File

@ -91,7 +91,7 @@ open class PetAPI {
let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"api_key": apiKey
"api_key": apiKey?.encodeToJSON()
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
@ -148,7 +148,7 @@ open class PetAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"status": status
"status": status.encodeToJSON()
])
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
@ -195,7 +195,7 @@ open class PetAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"tags": tags
"tags": tags.encodeToJSON()
])
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
@ -331,8 +331,8 @@ open class PetAPI {
path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil)
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"name": name,
"status": status
"name": name?.encodeToJSON(),
"status": status?.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)
@ -387,8 +387,8 @@ open class PetAPI {
path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil)
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata,
"file": file
"additionalMetadata": additionalMetadata?.encodeToJSON(),
"file": file?.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)
@ -443,8 +443,8 @@ open class PetAPI {
path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil)
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata,
"requiredFile": requiredFile
"additionalMetadata": additionalMetadata?.encodeToJSON(),
"requiredFile": requiredFile.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)

View File

@ -247,8 +247,8 @@ open class UserAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"username": username,
"password": password
"username": username.encodeToJSON(),
"password": password.encodeToJSON()
])
let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()

View File

@ -34,6 +34,10 @@ extension String: JSONEncodable {
func encodeToJSON() -> Any { return self as Any }
}
extension RawRepresentable where RawValue: JSONEncodable {
func encodeToJSON() -> Any { return self.rawValue as Any }
}
private func encodeIfPossible<T>(_ object: T) -> Any {
if let encodableObject = object as? JSONEncodable {
return encodableObject.encodeToJSON()
@ -83,6 +87,12 @@ extension Date: JSONEncodable {
}
}
extension URL: JSONEncodable {
func encodeToJSON() -> Any {
return self
}
}
extension UUID: JSONEncodable {
func encodeToJSON() -> Any {
return self.uuidString

View File

@ -186,7 +186,7 @@ open class FakeAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"query": query
"query": query.encodeToJSON()
])
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
@ -284,17 +284,17 @@ open class FakeAPI {
"integer": integer?.encodeToJSON(),
"int32": int32?.encodeToJSON(),
"int64": int64?.encodeToJSON(),
"number": number,
"float": float,
"double": double,
"string": string,
"pattern_without_delimiter": patternWithoutDelimiter,
"byte": byte,
"binary": binary,
"number": number.encodeToJSON(),
"float": float?.encodeToJSON(),
"double": double.encodeToJSON(),
"string": string?.encodeToJSON(),
"pattern_without_delimiter": patternWithoutDelimiter.encodeToJSON(),
"byte": byte.encodeToJSON(),
"binary": binary?.encodeToJSON(),
"date": date?.encodeToJSON(),
"dateTime": dateTime?.encodeToJSON(),
"password": password,
"callback": callback
"password": password?.encodeToJSON(),
"callback": callback?.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)
@ -415,8 +415,8 @@ open class FakeAPI {
let path = "/fake"
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"enum_form_string_array": enumFormStringArray,
"enum_form_string": enumFormString?.rawValue
"enum_form_string_array": enumFormStringArray?.encodeToJSON(),
"enum_form_string": enumFormString?.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)
@ -424,14 +424,14 @@ open class FakeAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"enum_query_string_array": enumQueryStringArray,
"enum_query_string": enumQueryString?.rawValue,
"enum_query_integer": enumQueryInteger?.rawValue,
"enum_query_double": enumQueryDouble?.rawValue
"enum_query_string_array": enumQueryStringArray?.encodeToJSON(),
"enum_query_string": enumQueryString?.encodeToJSON(),
"enum_query_integer": enumQueryInteger?.encodeToJSON(),
"enum_query_double": enumQueryDouble?.encodeToJSON()
])
let nillableHeaders: [String: Any?] = [
"enum_header_string_array": enumHeaderStringArray,
"enum_header_string": enumHeaderString?.rawValue
"enum_header_string_array": enumHeaderStringArray?.encodeToJSON(),
"enum_header_string": enumHeaderString?.encodeToJSON()
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
@ -486,8 +486,8 @@ open class FakeAPI {
"int64_group": int64Group?.encodeToJSON()
])
let nillableHeaders: [String: Any?] = [
"required_boolean_group": requiredBooleanGroup,
"boolean_group": booleanGroup
"required_boolean_group": requiredBooleanGroup.encodeToJSON(),
"boolean_group": booleanGroup?.encodeToJSON()
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
@ -558,8 +558,8 @@ open class FakeAPI {
let path = "/fake/jsonFormData"
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"param": param,
"param2": param2
"param": param.encodeToJSON(),
"param2": param2.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)

View File

@ -82,7 +82,7 @@ open class PetAPI {
let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"api_key": apiKey
"api_key": apiKey?.encodeToJSON()
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
@ -129,7 +129,7 @@ open class PetAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"status": status
"status": status.encodeToJSON()
])
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
@ -166,7 +166,7 @@ open class PetAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"tags": tags
"tags": tags.encodeToJSON()
])
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
@ -284,8 +284,8 @@ open class PetAPI {
path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil)
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"name": name,
"status": status
"name": name?.encodeToJSON(),
"status": status?.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)
@ -330,8 +330,8 @@ open class PetAPI {
path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil)
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata,
"file": file
"additionalMetadata": additionalMetadata?.encodeToJSON(),
"file": file?.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)
@ -376,8 +376,8 @@ open class PetAPI {
path = path.replacingOccurrences(of: "{petId}", with: petIdPostEscape, options: .literal, range: nil)
let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata,
"requiredFile": requiredFile
"additionalMetadata": additionalMetadata?.encodeToJSON(),
"requiredFile": requiredFile.encodeToJSON()
]
let nonNullParameters = APIHelper.rejectNil(formParams)

View File

@ -210,8 +210,8 @@ open class UserAPI {
var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([
"username": username,
"password": password
"username": username.encodeToJSON(),
"password": password.encodeToJSON()
])
let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()

View File

@ -34,6 +34,10 @@ extension String: JSONEncodable {
func encodeToJSON() -> Any { return self as Any }
}
extension RawRepresentable where RawValue: JSONEncodable {
func encodeToJSON() -> Any { return self.rawValue as Any }
}
private func encodeIfPossible<T>(_ object: T) -> Any {
if let encodableObject = object as? JSONEncodable {
return encodableObject.encodeToJSON()
@ -83,6 +87,12 @@ extension Date: JSONEncodable {
}
}
extension URL: JSONEncodable {
func encodeToJSON() -> Any {
return self
}
}
extension UUID: JSONEncodable {
func encodeToJSON() -> Any {
return self.uuidString