From ef8365ecd22f89074468b150666e74750fb473fd Mon Sep 17 00:00:00 2001 From: Jason Gavris Date: Sun, 11 Jun 2017 05:30:51 +0100 Subject: [PATCH] [Swift3] Fix handling of query item with array value (#5684) --- .../main/resources/swift3/APIHelper.mustache | 20 ++++++++++++++++--- .../Classes/Swaggers/APIHelper.swift | 20 ++++++++++++++++--- .../Classes/Swaggers/APIHelper.swift | 20 ++++++++++++++++--- .../Classes/Swaggers/APIHelper.swift | 20 ++++++++++++++++--- 4 files changed, 68 insertions(+), 12 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/swift3/APIHelper.mustache b/modules/swagger-codegen/src/main/resources/swift3/APIHelper.mustache index b612ff90921..b0bdb8a6c78 100644 --- a/modules/swagger-codegen/src/main/resources/swift3/APIHelper.mustache +++ b/modules/swagger-codegen/src/main/resources/swift3/APIHelper.mustache @@ -49,16 +49,30 @@ class APIHelper { return destination } - static func mapValuesToQueryItems(values: [String:Any?]) -> [URLQueryItem]? { let returnValues = values .filter { $0.1 != nil } - .map { (item: (_key: String, _value: Any?)) -> URLQueryItem in - URLQueryItem(name: item._key, value:"\(item._value!)") + .map { (item: (_key: String, _value: Any?)) -> [URLQueryItem] in + if let value = item._value as? Array { + return value.map { (v) -> URLQueryItem in + URLQueryItem( + name: item._key, + value: v + ) + } + } else { + return [URLQueryItem( + name: item._key, + value: "\(item._value!)" + )] + } } + .flatMap { $0 } + if returnValues.count == 0 { return nil } + return returnValues } diff --git a/samples/client/petstore/swift3/default/PetstoreClient/Classes/Swaggers/APIHelper.swift b/samples/client/petstore/swift3/default/PetstoreClient/Classes/Swaggers/APIHelper.swift index b612ff90921..b0bdb8a6c78 100644 --- a/samples/client/petstore/swift3/default/PetstoreClient/Classes/Swaggers/APIHelper.swift +++ b/samples/client/petstore/swift3/default/PetstoreClient/Classes/Swaggers/APIHelper.swift @@ -49,16 +49,30 @@ class APIHelper { return destination } - static func mapValuesToQueryItems(values: [String:Any?]) -> [URLQueryItem]? { let returnValues = values .filter { $0.1 != nil } - .map { (item: (_key: String, _value: Any?)) -> URLQueryItem in - URLQueryItem(name: item._key, value:"\(item._value!)") + .map { (item: (_key: String, _value: Any?)) -> [URLQueryItem] in + if let value = item._value as? Array { + return value.map { (v) -> URLQueryItem in + URLQueryItem( + name: item._key, + value: v + ) + } + } else { + return [URLQueryItem( + name: item._key, + value: "\(item._value!)" + )] + } } + .flatMap { $0 } + if returnValues.count == 0 { return nil } + return returnValues } diff --git a/samples/client/petstore/swift3/promisekit/PetstoreClient/Classes/Swaggers/APIHelper.swift b/samples/client/petstore/swift3/promisekit/PetstoreClient/Classes/Swaggers/APIHelper.swift index b612ff90921..b0bdb8a6c78 100644 --- a/samples/client/petstore/swift3/promisekit/PetstoreClient/Classes/Swaggers/APIHelper.swift +++ b/samples/client/petstore/swift3/promisekit/PetstoreClient/Classes/Swaggers/APIHelper.swift @@ -49,16 +49,30 @@ class APIHelper { return destination } - static func mapValuesToQueryItems(values: [String:Any?]) -> [URLQueryItem]? { let returnValues = values .filter { $0.1 != nil } - .map { (item: (_key: String, _value: Any?)) -> URLQueryItem in - URLQueryItem(name: item._key, value:"\(item._value!)") + .map { (item: (_key: String, _value: Any?)) -> [URLQueryItem] in + if let value = item._value as? Array { + return value.map { (v) -> URLQueryItem in + URLQueryItem( + name: item._key, + value: v + ) + } + } else { + return [URLQueryItem( + name: item._key, + value: "\(item._value!)" + )] + } } + .flatMap { $0 } + if returnValues.count == 0 { return nil } + return returnValues } diff --git a/samples/client/petstore/swift3/rxswift/PetstoreClient/Classes/Swaggers/APIHelper.swift b/samples/client/petstore/swift3/rxswift/PetstoreClient/Classes/Swaggers/APIHelper.swift index b612ff90921..b0bdb8a6c78 100644 --- a/samples/client/petstore/swift3/rxswift/PetstoreClient/Classes/Swaggers/APIHelper.swift +++ b/samples/client/petstore/swift3/rxswift/PetstoreClient/Classes/Swaggers/APIHelper.swift @@ -49,16 +49,30 @@ class APIHelper { return destination } - static func mapValuesToQueryItems(values: [String:Any?]) -> [URLQueryItem]? { let returnValues = values .filter { $0.1 != nil } - .map { (item: (_key: String, _value: Any?)) -> URLQueryItem in - URLQueryItem(name: item._key, value:"\(item._value!)") + .map { (item: (_key: String, _value: Any?)) -> [URLQueryItem] in + if let value = item._value as? Array { + return value.map { (v) -> URLQueryItem in + URLQueryItem( + name: item._key, + value: v + ) + } + } else { + return [URLQueryItem( + name: item._key, + value: "\(item._value!)" + )] + } } + .flatMap { $0 } + if returnValues.count == 0 { return nil } + return returnValues }