Skip to content

Commit

Permalink
Fix enum encodable (#4594)
Browse files Browse the repository at this point in the history
  • Loading branch information
4brunu authored and wing328 committed Nov 28, 2019
1 parent df682ab commit 8cc7bef
Show file tree
Hide file tree
Showing 22 changed files with 226 additions and 166 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -84,6 +88,12 @@ extension Date: JSONEncodable {
}
}

extension URL: JSONEncodable {
func encodeToJSON() -> Any {
return self
}
}

extension UUID: JSONEncodable {
func encodeToJSON() -> Any {
return self.uuidString
Expand Down
Original file line number Diff line number Diff line change
@@ -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()
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -415,23 +415,23 @@ 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)
let parameters = APIHelper.convertBoolToString(nonNullParameters)

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)

Expand Down Expand Up @@ -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)

Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -83,6 +87,12 @@ extension Date: JSONEncodable {
}
}

extension URL: JSONEncodable {
func encodeToJSON() -> Any {
return self
}
}

extension UUID: JSONEncodable {
func encodeToJSON() -> Any {
return self.uuidString
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -415,23 +415,23 @@ 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)
let parameters = APIHelper.convertBoolToString(nonNullParameters)

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)

Expand Down Expand Up @@ -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)

Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -83,6 +87,12 @@ extension Date: JSONEncodable {
}
}

extension URL: JSONEncodable {
func encodeToJSON() -> Any {
return self
}
}

extension UUID: JSONEncodable {
func encodeToJSON() -> Any {
return self.uuidString
Expand Down
Loading

0 comments on commit 8cc7bef

Please sign in to comment.