[Swift 5] fix Multipart FormData encoding and add support for Form URLEncoded enconding (#8275)

* [swift5] fix issue with form data with null file

* [swift5] fix issue with form data with null file on alamofire implementation

* [swift5] update sample projects

* [swift5] fix issue with form data with null file on alamofire implementation

* [swift5] add support for form url enconded in URLSession

* [swift5] add support for form url enconded in Alamofire

* [swift] improve code formatting

* [swift] improve code formatting

* [swift] dont defaut to application/json
This commit is contained in:
Bruno Coelho 2021-01-05 01:27:14 +00:00 committed by GitHub
parent d2aa40a935
commit dd9a19ab8f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
144 changed files with 3542 additions and 1239 deletions

View File

@ -522,7 +522,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig
return ModelUtils.isSet(p) ? "Set<" + getTypeDeclaration(inner) + ">" : "[" + getTypeDeclaration(inner) + "]"; return ModelUtils.isSet(p) ? "Set<" + getTypeDeclaration(inner) + ">" : "[" + getTypeDeclaration(inner) + "]";
} else if (ModelUtils.isMapSchema(p)) { } else if (ModelUtils.isMapSchema(p)) {
Schema inner = getAdditionalProperties(p); Schema inner = getAdditionalProperties(p);
return "[String:" + getTypeDeclaration(inner) + "]"; return "[String: " + getTypeDeclaration(inner) + "]";
} }
return super.getTypeDeclaration(p); return super.getTypeDeclaration(p);
} }
@ -807,7 +807,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig
@Override @Override
public String toEnumValue(String value, String datatype) { public String toEnumValue(String value, String datatype) {
// for string, array of string // for string, array of string
if ("String".equals(datatype) || "[String]".equals(datatype) || "[String:String]".equals(datatype)) { if ("String".equals(datatype) || "[String]".equals(datatype) || "[String: String]".equals(datatype)) {
return "\"" + String.valueOf(value) + "\""; return "\"" + String.valueOf(value) + "\"";
} else { } else {
return String.valueOf(value); return String.valueOf(value);

View File

@ -19,7 +19,6 @@ import Foundation
var credential: URLCredential? var credential: URLCredential?
var headers: [String: String] var headers: [String: String]
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} let parameters: [String: Any]? {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} let parameters: [String: Any]?
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} let isBody: Bool
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} let method: String {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} let method: String
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} let URLString: String {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} let URLString: String
@ -28,11 +27,10 @@ import Foundation
/// If you need to get the request's progress in older OS versions, please use Alamofire http client.{{/useURLSession}} /// If you need to get the request's progress in older OS versions, please use Alamofire http client.{{/useURLSession}}
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var onProgressReady: ((Progress) -> Void)? {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var onProgressReady: ((Progress) -> Void)?
required {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} init(method: String, URLString: String, parameters: [String: Any]?, isBody: Bool, headers: [String: String] = [:]) { required {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) {
self.method = method self.method = method
self.URLString = URLString self.URLString = URLString
self.parameters = parameters self.parameters = parameters
self.isBody = isBody
self.headers = headers self.headers = headers
addHeaders({{projectName}}API.customHeaders) addHeaders({{projectName}}API.customHeaders)

View File

@ -8,9 +8,8 @@
import Foundation{{#usePromiseKit}} import Foundation{{#usePromiseKit}}
import PromiseKit{{/usePromiseKit}}{{#useRxSwift}} import PromiseKit{{/usePromiseKit}}{{#useRxSwift}}
import RxSwift{{/useRxSwift}}{{#useCombine}} import RxSwift{{/useRxSwift}}{{#useCombine}}
import Combine{{/useCombine}} import Combine{{/useCombine}}{{#swiftUseApiNamespace}}
{{#swiftUseApiNamespace}}
extension {{projectName}}API { extension {{projectName}}API {
{{/swiftUseApiNamespace}} {{/swiftUseApiNamespace}}
@ -232,9 +231,9 @@ extension {{projectName}}API {
{{/bodyParam}} {{/bodyParam}}
{{^bodyParam}} {{^bodyParam}}
{{#hasFormParams}} {{#hasFormParams}}
let formParams: [String:Any?] = [ let formParams: [String: Any?] = [
{{#formParams}} {{#formParams}}
{{> _param}}{{^-last}},{{/-last}} {{> _param}},
{{/formParams}} {{/formParams}}
] ]
@ -242,24 +241,28 @@ extension {{projectName}}API {
let parameters = APIHelper.convertBoolToString(nonNullParameters) let parameters = APIHelper.convertBoolToString(nonNullParameters)
{{/hasFormParams}} {{/hasFormParams}}
{{^hasFormParams}} {{^hasFormParams}}
let parameters: [String:Any]? = nil let parameters: [String: Any]? = nil
{{/hasFormParams}} {{/hasFormParams}}
{{/bodyParam}}{{#hasQueryParams}} {{/bodyParam}}{{#hasQueryParams}}
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([{{^queryParams}}:{{/queryParams}} url?.queryItems = APIHelper.mapValuesToQueryItems([{{^queryParams}}:{{/queryParams}}
{{#queryParams}} {{#queryParams}}
{{> _param}}{{^-last}}, {{/-last}} {{> _param}},
{{/queryParams}} {{/queryParams}}
]){{/hasQueryParams}}{{^hasQueryParams}} ]){{/hasQueryParams}}{{^hasQueryParams}}
let url = URLComponents(string: URLString){{/hasQueryParams}}{{#headerParams}}{{#-first}} let url = URLComponents(string: URLString){{/hasQueryParams}}
let nillableHeaders: [String: Any?] = [{{/-first}}
{{> _param}}{{^-last}},{{/-last}}{{#-last}} let nillableHeaders: [String: Any?] = [{{^headerParams}}{{^hasFormParams}}
:{{/hasFormParams}}{{/headerParams}}{{#hasFormParams}}
"Content-Type": {{^consumes}}"multipart/form-data"{{/consumes}}{{#consumes.0}}"{{{mediaType}}}"{{/consumes.0}},{{/hasFormParams}}{{#headerParams}}
{{> _param}},{{/headerParams}}
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders){{/-last}}{{/headerParams}}
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}>.Type = {{projectName}}API.requestBuilderFactory.{{#returnType}}getBuilder(){{/returnType}}{{^returnType}}getNonDecodableBuilder(){{/returnType}} let requestBuilder: RequestBuilder<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}>.Type = {{projectName}}API.requestBuilderFactory.{{#returnType}}getBuilder(){{/returnType}}{{^returnType}}getNonDecodableBuilder(){{/returnType}}
return requestBuilder.init(method: "{{httpMethod}}", URLString: (url?.string ?? URLString), parameters: parameters, isBody: {{hasBodyParam}}{{#headerParams}}{{#-first}}, headers: headerParameters{{/-first}}{{/headerParams}}) return requestBuilder.init(method: "{{httpMethod}}", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
{{/operation}} {{/operation}}

View File

@ -12,7 +12,7 @@ class AlamofireRequestBuilderFactory: RequestBuilderFactory {
return AlamofireRequestBuilder<T>.self return AlamofireRequestBuilder<T>.self
} }
func getBuilder<T:Decodable>() -> RequestBuilder<T>.Type { func getBuilder<T: Decodable>() -> RequestBuilder<T>.Type {
return AlamofireDecodableRequestBuilder<T>.self return AlamofireDecodableRequestBuilder<T>.self
} }
} }
@ -21,8 +21,8 @@ class AlamofireRequestBuilderFactory: RequestBuilderFactory {
private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManager>() private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManager>()
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class AlamofireRequestBuilder<T>: RequestBuilder<T> { {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class AlamofireRequestBuilder<T>: RequestBuilder<T> {
required {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} init(method: String, URLString: String, parameters: [String : Any]?, isBody: Bool, headers: [String : String] = [:]) { required {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) {
super.init(method: method, URLString: URLString, parameters: parameters, isBody: isBody, headers: headers) super.init(method: method, URLString: URLString, parameters: parameters, headers: headers)
} }
/** /**
@ -39,7 +39,20 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
May be overridden by a subclass if you want to custom request constructor. May be overridden by a subclass if you want to custom request constructor.
*/ */
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func createURLRequest() -> URLRequest? { {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func createURLRequest() -> URLRequest? {
let encoding: ParameterEncoding = isBody ? JSONDataEncoding() : URLEncoding() guard let xMethod = Alamofire.HTTPMethod(rawValue: method) else {
fatalError("Unsuported Http method - \(method)")
}
let encoding: ParameterEncoding
switch xMethod {
case .get, .head:
encoding = URLEncoding()
case .options, .post, .put, .patch, .delete, .trace, .connect:
encoding = JSONDataEncoding()
}
guard let originalRequest = try? URLRequest(url: URLString, method: HTTPMethod(rawValue: method)!, headers: buildHeaders()) else { return nil } guard let originalRequest = try? URLRequest(url: URLString, method: HTTPMethod(rawValue: method)!, headers: buildHeaders()) else { return nil }
return try? encoding.encode(originalRequest, with: parameters) return try? encoding.encode(originalRequest, with: parameters)
} }
@ -59,62 +72,78 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
May be overridden by a subclass if you want to control the request May be overridden by a subclass if you want to control the request
configuration (e.g. to override the cache policy). configuration (e.g. to override the cache policy).
*/ */
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func makeRequest(manager: SessionManager, method: HTTPMethod, encoding: ParameterEncoding, headers: [String:String]) -> DataRequest { {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func makeRequest(manager: SessionManager, method: HTTPMethod, encoding: ParameterEncoding, headers: [String: String]) -> DataRequest {
return manager.request(URLString, method: method, parameters: parameters, encoding: encoding, headers: headers) return manager.request(URLString, method: method, parameters: parameters, encoding: encoding, headers: headers)
} }
override {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func execute(_ apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) { override {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func execute(_ apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
let managerId:String = UUID().uuidString let managerId = UUID().uuidString
// Create a new manager for each request to customize its request header // Create a new manager for each request to customize its request header
let manager = createSessionManager() let manager = createSessionManager()
managerStore[managerId] = manager managerStore[managerId] = manager
let encoding:ParameterEncoding = isBody ? JSONDataEncoding() : URLEncoding() guard let xMethod = Alamofire.HTTPMethod(rawValue: method) else {
fatalError("Unsuported Http method - \(method)")
}
let xMethod = Alamofire.HTTPMethod(rawValue: method) let encoding: ParameterEncoding?
let fileKeys = parameters == nil ? [] : parameters!.filter { $1 is NSURL }
.map { $0.0 }
if fileKeys.count > 0 { switch xMethod {
manager.upload(multipartFormData: { mpForm in case .get, .head:
for (k, v) in self.parameters! { encoding = URLEncoding()
switch v {
case let fileURL as URL: case .options, .post, .put, .patch, .delete, .trace, .connect:
if let mimeType = self.contentTypeForFormPart(fileURL: fileURL) { let contentType = headers["Content-Type"] ?? "application/json"
mpForm.append(fileURL, withName: k, fileName: fileURL.lastPathComponent, mimeType: mimeType)
if contentType == "application/json" {
encoding = JSONDataEncoding()
} else if contentType == "multipart/form-data" {
encoding = nil
manager.upload(multipartFormData: { mpForm in
for (k, v) in self.parameters! {
switch v {
case let fileURL as URL:
if let mimeType = self.contentTypeForFormPart(fileURL: fileURL) {
mpForm.append(fileURL, withName: k, fileName: fileURL.lastPathComponent, mimeType: mimeType)
} else {
mpForm.append(fileURL, withName: k)
}
case let string as String:
mpForm.append(string.data(using: String.Encoding.utf8)!, withName: k)
case let number as NSNumber:
mpForm.append(number.stringValue.data(using: String.Encoding.utf8)!, withName: k)
default:
fatalError("Unprocessable value \(v) with key \(k)")
} }
else { }
mpForm.append(fileURL, withName: k) }, to: URLString, method: xMethod, headers: nil, encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
if let onProgressReady = self.onProgressReady {
onProgressReady(upload.uploadProgress)
}
self.processRequest(request: upload, managerId, apiResponseQueue, completion)
case .failure(let encodingError):
apiResponseQueue.async {
completion(.failure(ErrorResponse.error(415, nil, nil, encodingError)))
} }
case let string as String:
mpForm.append(string.data(using: String.Encoding.utf8)!, withName: k)
case let number as NSNumber:
mpForm.append(number.stringValue.data(using: String.Encoding.utf8)!, withName: k)
default:
fatalError("Unprocessable value \(v) with key \(k)")
} }
} })
}, to: URLString, method: xMethod!, headers: nil, encodingCompletion: { encodingResult in } else if contentType == "application/x-www-form-urlencoded" {
switch encodingResult { encoding = URLEncoding(destination: .httpBody)
case .success(let upload, _, _): } else {
if let onProgressReady = self.onProgressReady { fatalError("Unsuported Media Type - \(contentType)")
onProgressReady(upload.uploadProgress) }
} }
self.processRequest(request: upload, managerId, apiResponseQueue, completion)
case .failure(let encodingError): if let encoding = encoding {
apiResponseQueue.async{ let request = makeRequest(manager: manager, method: xMethod, encoding: encoding, headers: headers)
completion(.failure(ErrorResponse.error(415, nil, nil, encodingError)))
}
}
})
} else {
let request = makeRequest(manager: manager, method: xMethod!, encoding: encoding, headers: headers)
if let onProgressReady = self.onProgressReady { if let onProgressReady = self.onProgressReady {
onProgressReady(request.progress) onProgressReady(request.progress)
} }
processRequest(request: request, managerId, apiResponseQueue, completion) processRequest(request: request, managerId, apiResponseQueue, completion)
} }
} }
fileprivate func processRequest(request: DataRequest, _ managerId: String, _ apiResponseQueue: DispatchQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) { fileprivate func processRequest(request: DataRequest, _ managerId: String, _ apiResponseQueue: DispatchQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
@ -132,14 +161,14 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
case is String.Type: case is String.Type:
validatedRequest.responseString(queue: apiResponseQueue, completionHandler: { (stringResponse) in validatedRequest.responseString(queue: apiResponseQueue, completionHandler: { (stringResponse) in
cleanupRequest() cleanupRequest()
switch stringResponse.result { switch stringResponse.result {
case let .success(value): case let .success(value):
completion(.success(Response(response: stringResponse.response!, body: value as? T))) completion(.success(Response(response: stringResponse.response!, body: value as? T)))
case let .failure(error): case let .failure(error):
completion(.failure(ErrorResponse.error(stringResponse.response?.statusCode ?? 500, stringResponse.data, stringResponse.response, error))) completion(.failure(ErrorResponse.error(stringResponse.response?.statusCode ?? 500, stringResponse.data, stringResponse.response, error)))
} }
}) })
case is URL.Type: case is URL.Type:
validatedRequest.responseData(queue: apiResponseQueue, completionHandler: { (dataResponse) in validatedRequest.responseData(queue: apiResponseQueue, completionHandler: { (dataResponse) in
@ -188,26 +217,26 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
case is Void.Type: case is Void.Type:
validatedRequest.responseData(queue: apiResponseQueue, completionHandler: { (voidResponse) in validatedRequest.responseData(queue: apiResponseQueue, completionHandler: { (voidResponse) in
cleanupRequest() cleanupRequest()
switch voidResponse.result { switch voidResponse.result {
case .success: case .success:
completion(.success(Response(response: voidResponse.response!, body: nil))) completion(.success(Response(response: voidResponse.response!, body: nil)))
case let .failure(error): case let .failure(error):
completion(.failure(ErrorResponse.error(voidResponse.response?.statusCode ?? 500, voidResponse.data, voidResponse.response, error))) completion(.failure(ErrorResponse.error(voidResponse.response?.statusCode ?? 500, voidResponse.data, voidResponse.response, error)))
} }
}) })
default: default:
validatedRequest.responseData(queue: apiResponseQueue, completionHandler: { (dataResponse) in validatedRequest.responseData(queue: apiResponseQueue, completionHandler: { (dataResponse) in
cleanupRequest() cleanupRequest()
switch dataResponse.result { switch dataResponse.result {
case .success: case .success:
completion(.success(Response(response: dataResponse.response!, body: dataResponse.data as? T))) completion(.success(Response(response: dataResponse.response!, body: dataResponse.data as? T)))
case let .failure(error): case let .failure(error):
completion(.failure(ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, dataResponse.response, error))) completion(.failure(ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, dataResponse.response, error)))
} }
}) })
} }
} }
@ -220,7 +249,7 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
return httpHeaders return httpHeaders
} }
fileprivate func getFileName(fromContentDisposition contentDisposition : String?) -> String? { fileprivate func getFileName(fromContentDisposition contentDisposition: String?) -> String? {
guard let contentDisposition = contentDisposition else { guard let contentDisposition = contentDisposition else {
return nil return nil
@ -228,7 +257,7 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
let items = contentDisposition.components(separatedBy: ";") let items = contentDisposition.components(separatedBy: ";")
var filename : String? = nil var filename: String?
for contentItem in items { for contentItem in items {
@ -239,7 +268,7 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
filename = contentItem filename = contentItem
return filename? return filename?
.replacingCharacters(in: range, with:"") .replacingCharacters(in: range, with: "")
.replacingOccurrences(of: "\"", with: "") .replacingOccurrences(of: "\"", with: "")
.trimmingCharacters(in: .whitespacesAndNewlines) .trimmingCharacters(in: .whitespacesAndNewlines)
} }
@ -248,7 +277,7 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
} }
fileprivate func getPath(from url : URL) throws -> String { fileprivate func getPath(from url: URL) throws -> String {
guard var path = URLComponents(url: url, resolvingAgainstBaseURL: true)?.path else { guard var path = URLComponents(url: url, resolvingAgainstBaseURL: true)?.path else {
throw DownloadException.requestMissingPath throw DownloadException.requestMissingPath
@ -262,7 +291,7 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
} }
fileprivate func getURL(from urlRequest : URLRequest) throws -> URL { fileprivate func getURL(from urlRequest: URLRequest) throws -> URL {
guard let url = urlRequest.url else { guard let url = urlRequest.url else {
throw DownloadException.requestMissingURL throw DownloadException.requestMissingURL
@ -273,7 +302,7 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
} }
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class AlamofireDecodableRequestBuilder<T:Decodable>: AlamofireRequestBuilder<T> { {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class AlamofireDecodableRequestBuilder<T: Decodable>: AlamofireRequestBuilder<T> {
override fileprivate func processRequest(request: DataRequest, _ managerId: String, _ apiResponseQueue: DispatchQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) { override fileprivate func processRequest(request: DataRequest, _ managerId: String, _ apiResponseQueue: DispatchQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let credential = self.credential { if let credential = self.credential {
@ -290,7 +319,7 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
case is String.Type: case is String.Type:
validatedRequest.responseString(queue: apiResponseQueue, completionHandler: { (stringResponse) in validatedRequest.responseString(queue: apiResponseQueue, completionHandler: { (stringResponse) in
cleanupRequest() cleanupRequest()
switch stringResponse.result { switch stringResponse.result {
case let .success(value): case let .success(value):
completion(.success(Response(response: stringResponse.response!, body: value as? T))) completion(.success(Response(response: stringResponse.response!, body: value as? T)))
@ -302,7 +331,7 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
case is Void.Type: case is Void.Type:
validatedRequest.responseData(queue: apiResponseQueue, completionHandler: { (voidResponse) in validatedRequest.responseData(queue: apiResponseQueue, completionHandler: { (voidResponse) in
cleanupRequest() cleanupRequest()
switch voidResponse.result { switch voidResponse.result {
case .success: case .success:
completion(.success(Response(response: voidResponse.response!, body: nil))) completion(.success(Response(response: voidResponse.response!, body: nil)))
@ -314,7 +343,7 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
case is Data.Type: case is Data.Type:
validatedRequest.responseData(queue: apiResponseQueue, completionHandler: { (dataResponse) in validatedRequest.responseData(queue: apiResponseQueue, completionHandler: { (dataResponse) in
cleanupRequest() cleanupRequest()
switch dataResponse.result { switch dataResponse.result {
case .success: case .success:
completion(.success(Response(response: dataResponse.response!, body: dataResponse.data as? T))) completion(.success(Response(response: dataResponse.response!, body: dataResponse.data as? T)))
@ -343,14 +372,14 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
} }
let decodeResult = CodableHelper.decode(T.self, from: data) let decodeResult = CodableHelper.decode(T.self, from: data)
switch decodeResult { switch decodeResult {
case let .success(decodableObj): case let .success(decodableObj):
completion(.success(Response(response: httpResponse, body: decodableObj))) completion(.success(Response(response: httpResponse, body: decodableObj)))
case let .failure(error): case let .failure(error):
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, httpResponse, error))) completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, httpResponse, error)))
} }
}) })
} }
} }
@ -358,9 +387,9 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
} }
extension JSONDataEncoding: ParameterEncoding { extension JSONDataEncoding: ParameterEncoding {
// MARK: Encoding // MARK: Encoding
/// Creates a URL request by encoding parameters and applying them onto an existing request. /// Creates a URL request by encoding parameters and applying them onto an existing request.
/// ///
/// - parameter urlRequest: The request to have parameters applied. /// - parameter urlRequest: The request to have parameters applied.
@ -372,7 +401,7 @@ extension JSONDataEncoding: ParameterEncoding {
/// - returns: The encoded request. /// - returns: The encoded request.
public func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest { public func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest {
let urlRequest = try urlRequest.asURLRequest() let urlRequest = try urlRequest.asURLRequest()
return self.encode(urlRequest, with: parameters) return self.encode(urlRequest, with: parameters)
} }
} }

View File

@ -14,7 +14,7 @@ class URLSessionRequestBuilderFactory: RequestBuilderFactory {
return URLSessionRequestBuilder<T>.self return URLSessionRequestBuilder<T>.self
} }
func getBuilder<T:Decodable>() -> RequestBuilder<T>.Type { func getBuilder<T: Decodable>() -> RequestBuilder<T>.Type {
return URLSessionDecodableRequestBuilder<T>.self return URLSessionDecodableRequestBuilder<T>.self
} }
} }
@ -23,16 +23,10 @@ class URLSessionRequestBuilderFactory: RequestBuilderFactory {
private var urlSessionStore = SynchronizedDictionary<String, URLSession>() private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class URLSessionRequestBuilder<T>: RequestBuilder<T> { {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class URLSessionRequestBuilder<T>: RequestBuilder<T> {
private var observation: NSKeyValueObservation?
deinit {
observation?.invalidate()
}
// swiftlint:disable:next weak_delegate // swiftlint:disable:next weak_delegate
fileprivate let sessionDelegate = SessionDelegate() fileprivate let sessionDelegate = SessionDelegate()
/** /**
May be assigned if you want to control the authentication challenges. May be assigned if you want to control the authentication challenges.
*/ */
@ -46,11 +40,11 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
*/ */
@available(*, deprecated, message: "Please override execute() method to intercept and handle errors like authorization or retry the request. Check the Wiki for more info. https://github.com/OpenAPITools/openapi-generator/wiki/FAQ#how-do-i-implement-bearer-token-authentication-with-urlsession-on-the-swift-api-client") @available(*, deprecated, message: "Please override execute() method to intercept and handle errors like authorization or retry the request. Check the Wiki for more info. https://github.com/OpenAPITools/openapi-generator/wiki/FAQ#how-do-i-implement-bearer-token-authentication-with-urlsession-on-the-swift-api-client")
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var taskCompletionShouldRetry: ((Data?, URLResponse?, Error?, @escaping (Bool) -> Void) -> Void)? {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} var taskCompletionShouldRetry: ((Data?, URLResponse?, Error?, @escaping (Bool) -> Void) -> Void)?
required {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} init(method: String, URLString: String, parameters: [String : Any]?, isBody: Bool, headers: [String : String] = [:]) { required {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) {
super.init(method: method, URLString: URLString, parameters: parameters, isBody: isBody, headers: headers) super.init(method: method, URLString: URLString, parameters: parameters, headers: headers)
} }
/** /**
May be overridden by a subclass if you want to control the URLSession May be overridden by a subclass if you want to control the URLSession
configuration. configuration.
@ -78,71 +72,76 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
May be overridden by a subclass if you want to control the URLRequest May be overridden by a subclass if you want to control the URLRequest
configuration (e.g. to override the cache policy). configuration (e.g. to override the cache policy).
*/ */
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func createURLRequest(urlSession: URLSession, method: HTTPMethod, encoding: ParameterEncoding, headers: [String:String]) throws -> URLRequest { {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func createURLRequest(urlSession: URLSession, method: HTTPMethod, encoding: ParameterEncoding, headers: [String: String]) throws -> URLRequest {
guard let url = URL(string: URLString) else { guard let url = URL(string: URLString) else {
throw DownloadException.requestMissingURL throw DownloadException.requestMissingURL
} }
var originalRequest = URLRequest(url: url) var originalRequest = URLRequest(url: url)
originalRequest.httpMethod = method.rawValue originalRequest.httpMethod = method.rawValue
headers.forEach { key, value in headers.forEach { key, value in
originalRequest.setValue(value, forHTTPHeaderField: key) originalRequest.setValue(value, forHTTPHeaderField: key)
} }
buildHeaders().forEach { key, value in buildHeaders().forEach { key, value in
originalRequest.setValue(value, forHTTPHeaderField: key) originalRequest.setValue(value, forHTTPHeaderField: key)
} }
let modifiedRequest = try encoding.encode(originalRequest, with: parameters) let modifiedRequest = try encoding.encode(originalRequest, with: parameters)
return modifiedRequest return modifiedRequest
} }
override {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func execute(_ apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) { override {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func execute(_ apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
let urlSessionId:String = UUID().uuidString let urlSessionId = UUID().uuidString
// Create a new manager for each request to customize its request header // Create a new manager for each request to customize its request header
let urlSession = createURLSession() let urlSession = createURLSession()
urlSessionStore[urlSessionId] = urlSession urlSessionStore[urlSessionId] = urlSession
let parameters: [String: Any] = self.parameters ?? [:]
let fileKeys = parameters.filter { $1 is URL }
.map { $0.0 }
let encoding: ParameterEncoding
if fileKeys.count > 0 {
encoding = FileUploadEncoding(contentTypeForFormPart: contentTypeForFormPart(fileURL:))
} else if isBody {
encoding = JSONDataEncoding()
} else {
encoding = URLEncoding()
}
guard let xMethod = HTTPMethod(rawValue: method) else { guard let xMethod = HTTPMethod(rawValue: method) else {
fatalError("Unsuported Http method - \(method)") fatalError("Unsuported Http method - \(method)")
} }
let encoding: ParameterEncoding
switch xMethod {
case .get, .head:
encoding = URLEncoding()
case .options, .post, .put, .patch, .delete, .trace, .connect:
let contentType = headers["Content-Type"] ?? "application/json"
if contentType == "application/json" {
encoding = JSONDataEncoding()
} else if contentType == "multipart/form-data" {
encoding = FormDataEncoding(contentTypeForFormPart: contentTypeForFormPart(fileURL:))
} else if contentType == "application/x-www-form-urlencoded" {
encoding = FormURLEncoding()
} else {
fatalError("Unsuported Media Type - \(contentType)")
}
}
let cleanupRequest = { let cleanupRequest = {
urlSessionStore[urlSessionId] = nil urlSessionStore[urlSessionId] = nil
self.observation?.invalidate()
} }
do { do {
let request = try createURLRequest(urlSession: urlSession, method: xMethod, encoding: encoding, headers: headers) let request = try createURLRequest(urlSession: urlSession, method: xMethod, encoding: encoding, headers: headers)
let dataTask = urlSession.dataTask(with: request) { [weak self] data, response, error in let dataTask = urlSession.dataTask(with: request) { [weak self] data, response, error in
guard let self = self else { return } guard let self = self else { return }
if let taskCompletionShouldRetry = self.taskCompletionShouldRetry { if let taskCompletionShouldRetry = self.taskCompletionShouldRetry {
taskCompletionShouldRetry(data, response, error) { [weak self] shouldRetry in taskCompletionShouldRetry(data, response, error) { [weak self] shouldRetry in
guard let self = self else { return } guard let self = self else { return }
if shouldRetry { if shouldRetry {
cleanupRequest() cleanupRequest()
self.execute(apiResponseQueue, completion) self.execute(apiResponseQueue, completion)
@ -158,22 +157,21 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
} }
} }
} }
if #available(iOS 11.0, macOS 10.13, macCatalyst 13.0, tvOS 11.0, watchOS 4.0, *) { if #available(iOS 11.0, macOS 10.13, macCatalyst 13.0, tvOS 11.0, watchOS 4.0, *) {
onProgressReady?(dataTask.progress) onProgressReady?(dataTask.progress)
} }
dataTask.resume() dataTask.resume()
} catch { } catch {
apiResponseQueue.async { apiResponseQueue.async {
cleanupRequest() cleanupRequest()
completion(.failure(ErrorResponse.error(415, nil, nil, error))) completion(.failure(ErrorResponse.error(415, nil, nil, error)))
} }
} }
} }
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) { fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error { if let error = error {
@ -193,59 +191,59 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
switch T.self { switch T.self {
case is String.Type: case is String.Type:
let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? ""
completion(.success(Response<T>(response: httpResponse, body: body as? T))) completion(.success(Response<T>(response: httpResponse, body: body as? T)))
case is URL.Type: case is URL.Type:
do { do {
guard error == nil else { guard error == nil else {
throw DownloadException.responseFailed throw DownloadException.responseFailed
} }
guard let data = data else { guard let data = data else {
throw DownloadException.responseDataMissing throw DownloadException.responseDataMissing
} }
let fileManager = FileManager.default let fileManager = FileManager.default
let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
let requestURL = try self.getURL(from: urlRequest) let requestURL = try self.getURL(from: urlRequest)
var requestPath = try self.getPath(from: requestURL) var requestPath = try self.getPath(from: requestURL)
if let headerFileName = self.getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) { if let headerFileName = self.getFileName(fromContentDisposition: httpResponse.allHeaderFields["Content-Disposition"] as? String) {
requestPath = requestPath.appending("/\(headerFileName)") requestPath = requestPath.appending("/\(headerFileName)")
} }
let filePath = documentsDirectory.appendingPathComponent(requestPath) let filePath = documentsDirectory.appendingPathComponent(requestPath)
let directoryPath = filePath.deletingLastPathComponent().path let directoryPath = filePath.deletingLastPathComponent().path
try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil)
try data.write(to: filePath, options: .atomic) try data.write(to: filePath, options: .atomic)
completion(.success(Response(response: httpResponse, body: filePath as? T))) completion(.success(Response(response: httpResponse, body: filePath as? T)))
} catch let requestParserError as DownloadException { } catch let requestParserError as DownloadException {
completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
} catch let error { } catch let error {
completion(.failure(ErrorResponse.error(400, data, response, error))) completion(.failure(ErrorResponse.error(400, data, response, error)))
} }
case is Void.Type: case is Void.Type:
completion(.success(Response(response: httpResponse, body: nil))) completion(.success(Response(response: httpResponse, body: nil)))
default: default:
completion(.success(Response(response: httpResponse, body: data as? T))) completion(.success(Response(response: httpResponse, body: data as? T)))
} }
} }
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func buildHeaders() -> [String: String] { {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func buildHeaders() -> [String: String] {
var httpHeaders: [String : String] = [:] var httpHeaders: [String: String] = [:]
for (key, value) in self.headers { for (key, value) in self.headers {
httpHeaders[key] = value httpHeaders[key] = value
} }
@ -255,7 +253,7 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
return httpHeaders return httpHeaders
} }
fileprivate func getFileName(fromContentDisposition contentDisposition : String?) -> String? { fileprivate func getFileName(fromContentDisposition contentDisposition: String?) -> String? {
guard let contentDisposition = contentDisposition else { guard let contentDisposition = contentDisposition else {
return nil return nil
@ -274,7 +272,7 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
filename = contentItem filename = contentItem
return filename? return filename?
.replacingCharacters(in: range, with:"") .replacingCharacters(in: range, with: "")
.replacingOccurrences(of: "\"", with: "") .replacingOccurrences(of: "\"", with: "")
.trimmingCharacters(in: .whitespacesAndNewlines) .trimmingCharacters(in: .whitespacesAndNewlines)
} }
@ -283,7 +281,7 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
} }
fileprivate func getPath(from url : URL) throws -> String { fileprivate func getPath(from url: URL) throws -> String {
guard var path = URLComponents(url: url, resolvingAgainstBaseURL: true)?.path else { guard var path = URLComponents(url: url, resolvingAgainstBaseURL: true)?.path else {
throw DownloadException.requestMissingPath throw DownloadException.requestMissingPath
@ -297,7 +295,7 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
} }
fileprivate func getURL(from urlRequest : URLRequest) throws -> URL { fileprivate func getURL(from urlRequest: URLRequest) throws -> URL {
guard let url = urlRequest.url else { guard let url = urlRequest.url else {
throw DownloadException.requestMissingURL throw DownloadException.requestMissingURL
@ -308,7 +306,7 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
} }
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class URLSessionDecodableRequestBuilder<T:Decodable>: URLSessionRequestBuilder<T> { {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBuilder<T> {
override fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) { override fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error { if let error = error {
@ -328,28 +326,28 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
switch T.self { switch T.self {
case is String.Type: case is String.Type:
let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? ""
completion(.success(Response<T>(response: httpResponse, body: body as? T))) completion(.success(Response<T>(response: httpResponse, body: body as? T)))
case is Void.Type: case is Void.Type:
completion(.success(Response(response: httpResponse, body: nil))) completion(.success(Response(response: httpResponse, body: nil)))
case is Data.Type: case is Data.Type:
completion(.success(Response(response: httpResponse, body: data as? T))) completion(.success(Response(response: httpResponse, body: data as? T)))
default: default:
guard let data = data, !data.isEmpty else { guard let data = data, !data.isEmpty else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse))) completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
return return
} }
let decodeResult = CodableHelper.decode(T.self, from: data) let decodeResult = CodableHelper.decode(T.self, from: data)
switch decodeResult { switch decodeResult {
case let .success(decodableObj): case let .success(decodableObj):
completion(.success(Response(response: httpResponse, body: decodableObj))) completion(.success(Response(response: httpResponse, body: decodableObj)))
@ -360,10 +358,10 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
} }
} }
fileprivate class SessionDelegate: NSObject, URLSessionDelegate, URLSessionDataDelegate { private class SessionDelegate: NSObject, URLSessionDelegate, URLSessionDataDelegate {
var credential: URLCredential? var credential: URLCredential?
var taskDidReceiveChallenge: ((URLSession, URLSessionTask, URLAuthenticationChallenge) -> (URLSession.AuthChallengeDisposition, URLCredential?))? var taskDidReceiveChallenge: ((URLSession, URLSessionTask, URLAuthenticationChallenge) -> (URLSession.AuthChallengeDisposition, URLCredential?))?
func urlSession(_ session: URLSession, task: URLSessionTask, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) { func urlSession(_ session: URLSession, task: URLSessionTask, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
@ -406,13 +404,13 @@ fileprivate class SessionDelegate: NSObject, URLSessionDelegate, URLSessionDataD
func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest
} }
fileprivate class URLEncoding: ParameterEncoding { private class URLEncoding: ParameterEncoding {
func encode(_ urlRequest: URLRequest, with parameters: [String : Any]?) throws -> URLRequest { func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest {
var urlRequest = urlRequest var urlRequest = urlRequest
guard let parameters = parameters else { return urlRequest } guard let parameters = parameters else { return urlRequest }
guard let url = urlRequest.url else { guard let url = urlRequest.url else {
throw DownloadException.requestMissingURL throw DownloadException.requestMissingURL
} }
@ -421,12 +419,12 @@ fileprivate class URLEncoding: ParameterEncoding {
urlComponents.queryItems = APIHelper.mapValuesToQueryItems(parameters) urlComponents.queryItems = APIHelper.mapValuesToQueryItems(parameters)
urlRequest.url = urlComponents.url urlRequest.url = urlComponents.url
} }
return urlRequest return urlRequest
} }
} }
fileprivate class FileUploadEncoding: ParameterEncoding { private class FormDataEncoding: ParameterEncoding {
let contentTypeForFormPart: (_ fileURL: URL) -> String? let contentTypeForFormPart: (_ fileURL: URL) -> String?
@ -437,13 +435,13 @@ fileprivate class FileUploadEncoding: ParameterEncoding {
func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest { func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest {
var urlRequest = urlRequest var urlRequest = urlRequest
guard let parameters = parameters, !parameters.isEmpty else { guard let parameters = parameters, !parameters.isEmpty else {
return urlRequest return urlRequest
} }
let boundary = "Boundary-\(UUID().uuidString)" let boundary = "Boundary-\(UUID().uuidString)"
urlRequest.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type") urlRequest.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
for (key, value) in parameters { for (key, value) in parameters {
@ -483,7 +481,7 @@ fileprivate class FileUploadEncoding: ParameterEncoding {
fatalError("Unprocessable value \(value) with key \(key)") fatalError("Unprocessable value \(value) with key \(key)")
} }
} }
var body = urlRequest.httpBody.orEmpty var body = urlRequest.httpBody.orEmpty
body.append("\r\n--\(boundary)--\r\n") body.append("\r\n--\(boundary)--\r\n")
@ -498,7 +496,7 @@ fileprivate class FileUploadEncoding: ParameterEncoding {
var urlRequest = urlRequest var urlRequest = urlRequest
var body = urlRequest.httpBody.orEmpty var body = urlRequest.httpBody.orEmpty
let fileData = try Data(contentsOf: fileURL) let fileData = try Data(contentsOf: fileURL)
let mimetype = self.contentTypeForFormPart(fileURL) ?? mimeType(for: fileURL) let mimetype = self.contentTypeForFormPart(fileURL) ?? mimeType(for: fileURL)
@ -506,7 +504,7 @@ fileprivate class FileUploadEncoding: ParameterEncoding {
let fileName = fileURL.lastPathComponent let fileName = fileURL.lastPathComponent
// If we already added something then we need an additional newline. // If we already added something then we need an additional newline.
if (body.count > 0) { if body.count > 0 {
body.append("\r\n") body.append("\r\n")
} }
@ -522,20 +520,20 @@ fileprivate class FileUploadEncoding: ParameterEncoding {
// The value data. // The value data.
body.append(fileData) body.append(fileData)
urlRequest.httpBody = body urlRequest.httpBody = body
return urlRequest return urlRequest
} }
private func configureDataUploadRequest(urlRequest: URLRequest, boundary: String, name: String, data: Data) -> URLRequest { private func configureDataUploadRequest(urlRequest: URLRequest, boundary: String, name: String, data: Data) -> URLRequest {
var urlRequest = urlRequest var urlRequest = urlRequest
var body = urlRequest.httpBody.orEmpty var body = urlRequest.httpBody.orEmpty
// If we already added something then we need an additional newline. // If we already added something then we need an additional newline.
if (body.count > 0) { if body.count > 0 {
body.append("\r\n") body.append("\r\n")
} }
@ -570,7 +568,25 @@ fileprivate class FileUploadEncoding: ParameterEncoding {
} }
fileprivate extension Data { private class FormURLEncoding: ParameterEncoding {
func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest {
var urlRequest = urlRequest
var requestBodyComponents = URLComponents()
requestBodyComponents.queryItems = APIHelper.mapValuesToQueryItems(parameters ?? [:])
if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil {
urlRequest.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
}
urlRequest.httpBody = requestBodyComponents.query?.data(using: .utf8)
return urlRequest
}
}
private extension Data {
/// Append string to Data /// Append string to Data
/// ///
/// Rather than littering my code with calls to `dataUsingEncoding` to convert strings to Data, and then add that data to the Data, this wraps it in a nice convenient little extension to Data. This converts using UTF-8. /// Rather than littering my code with calls to `dataUsingEncoding` to convert strings to Data, and then add that data to the Data, this wraps it in a nice convenient little extension to Data. This converts using UTF-8.
@ -584,7 +600,7 @@ fileprivate extension Data {
} }
} }
fileprivate extension Optional where Wrapped == Data { private extension Optional where Wrapped == Data {
var orEmpty: Data { var orEmpty: Data {
self ?? Data() self ?? Data()
} }

View File

@ -6,22 +6,10 @@
// //
import Foundation import Foundation
{{#description}} {{#description}}
/** {{description}} */{{/description}}
{{#isDeprecated}} /** {{description}} */{{/description}}{{#isDeprecated}}
@available(*, deprecated, message: "This schema is deprecated.") @available(*, deprecated, message: "This schema is deprecated."){{/isDeprecated}}{{#isArray}}
{{/isDeprecated}} {{> modelArray}}{{/isArray}}{{^isArray}}{{#isEnum}}
{{#isArray}} {{> modelEnum}}{{/isEnum}}{{^isEnum}}
{{> modelArray}} {{> modelObject}}{{/isEnum}}{{/isArray}}{{/model}}{{/models}}
{{/isArray}}
{{^isArray}}
{{#isEnum}}
{{> modelEnum}}
{{/isEnum}}
{{^isEnum}}
{{> modelObject}}
{{/isEnum}}
{{/isArray}}
{{/model}}
{{/models}}

View File

@ -1,8 +1,5 @@
{{^objcCompatible}} {{^objcCompatible}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} struct {{classname}}: Codable{{#vendorExtensions.x-swift-hashable}}, Hashable{{/vendorExtensions.x-swift-hashable}} {
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} struct {{classname}}: Codable{{#vendorExtensions.x-swift-hashable}}, Hashable{{/vendorExtensions.x-swift-hashable}} { {{/objcCompatible}}{{#objcCompatible}}@objc {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} class {{classname}}: NSObject, Codable{{#vendorExtensions.x-swift-hashable}}, Hashable{{/vendorExtensions.x-swift-hashable}} {
{{/objcCompatible}}
{{#objcCompatible}}
@objc {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} class {{classname}}: NSObject, Codable{{#vendorExtensions.x-swift-hashable}}, Hashable{{/vendorExtensions.x-swift-hashable}} {
{{/objcCompatible}} {{/objcCompatible}}
{{#allVars}} {{#allVars}}
@ -13,14 +10,12 @@
{{#allVars}} {{#allVars}}
{{#isEnum}} {{#isEnum}}
{{#description}}/** {{description}} */ {{#description}}/** {{description}} */
{{/description}}{{#deprecated}} {{/description}}{{#deprecated}}@available(*, deprecated, message: "This property is deprecated.")
@available(*, deprecated, message: "This property is deprecated.")
{{/deprecated}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#readonlyProperties}}private(set) {{/readonlyProperties}}var {{name}}: {{{datatypeWithEnum}}}{{#required}}{{#isNullable}}?{{/isNullable}}{{/required}}{{^required}}?{{/required}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}} {{/deprecated}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#readonlyProperties}}private(set) {{/readonlyProperties}}var {{name}}: {{{datatypeWithEnum}}}{{#required}}{{#isNullable}}?{{/isNullable}}{{/required}}{{^required}}?{{/required}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}
{{/isEnum}} {{/isEnum}}
{{^isEnum}} {{^isEnum}}
{{#description}}/** {{description}} */ {{#description}}/** {{description}} */
{{/description}}{{#deprecated}} {{/description}}{{#deprecated}}@available(*, deprecated, message: "This property is deprecated.")
@available(*, deprecated, message: "This property is deprecated.")
{{/deprecated}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#readonlyProperties}}private(set) {{/readonlyProperties}}var {{name}}: {{{datatype}}}{{#required}}{{#isNullable}}?{{/isNullable}}{{/required}}{{^required}}?{{/required}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}} {{/deprecated}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#readonlyProperties}}private(set) {{/readonlyProperties}}var {{name}}: {{{datatype}}}{{#required}}{{#isNullable}}?{{/isNullable}}{{/required}}{{^required}}?{{/required}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}
{{#objcCompatible}} {{#objcCompatible}}
{{#vendorExtensions.x-swift-optional-scalar}} {{#vendorExtensions.x-swift-optional-scalar}}
@ -33,8 +28,8 @@
{{/objcCompatible}} {{/objcCompatible}}
{{/isEnum}} {{/isEnum}}
{{/allVars}} {{/allVars}}
{{#hasVars}} {{#hasVars}}
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} init({{#allVars}}{{name}}: {{{datatypeWithEnum}}}{{#required}}{{#isNullable}}?{{/isNullable}}{{/required}}{{^required}}?{{/required}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}{{^required}} = nil{{/required}}{{/defaultValue}}{{^-last}}, {{/-last}}{{/allVars}}) { {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} init({{#allVars}}{{name}}: {{{datatypeWithEnum}}}{{#required}}{{#isNullable}}?{{/isNullable}}{{/required}}{{^required}}?{{/required}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}{{^required}} = nil{{/required}}{{/defaultValue}}{{^-last}}, {{/-last}}{{/allVars}}) {
{{#allVars}} {{#allVars}}
self.{{name}} = {{name}} self.{{name}} = {{name}}
@ -42,7 +37,7 @@
} }
{{/hasVars}} {{/hasVars}}
{{#additionalPropertiesType}} {{#additionalPropertiesType}}
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#readonlyProperties}}private(set) {{/readonlyProperties}}var additionalProperties: [String:{{{additionalPropertiesType}}}] = [:] {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} {{#readonlyProperties}}private(set) {{/readonlyProperties}}var additionalProperties: [String: {{{additionalPropertiesType}}}] = [:]
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} subscript(key: String) -> {{{additionalPropertiesType}}}? { {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} subscript(key: String) -> {{{additionalPropertiesType}}}? {
get { get {
@ -83,11 +78,12 @@
{{/allVars}} {{/allVars}}
additionalProperties = try container.decodeMap({{{additionalPropertiesType}}}.self, excludedKeys: nonAdditionalPropertyKeys) additionalProperties = try container.decodeMap({{{additionalPropertiesType}}}.self, excludedKeys: nonAdditionalPropertyKeys)
} }
{{/additionalPropertiesType}} {{/additionalPropertiesType}}
{{^additionalPropertiesType}}{{#vendorExtensions.x-codegen-has-escaped-property-names}} {{^additionalPropertiesType}}{{#vendorExtensions.x-codegen-has-escaped-property-names}}
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum CodingKeys: String, CodingKey, CaseIterable { {{#allVars}} {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum CodingKeys: String, CodingKey, CaseIterable {
case {{name}}{{#vendorExtensions.x-codegen-escaped-property-name}} = "{{{baseName}}}"{{/vendorExtensions.x-codegen-escaped-property-name}}{{/allVars}} {{#allVars}}
case {{name}}{{#vendorExtensions.x-codegen-escaped-property-name}} = "{{{baseName}}}"{{/vendorExtensions.x-codegen-escaped-property-name}}
{{/allVars}}
} }
{{/vendorExtensions.x-codegen-has-escaped-property-names}}{{/additionalPropertiesType}} {{/vendorExtensions.x-codegen-has-escaped-property-names}}{{/additionalPropertiesType}}
} }

View File

@ -18,18 +18,16 @@ open class RequestBuilder<T> {
var credential: URLCredential? var credential: URLCredential?
var headers: [String: String] var headers: [String: String]
public let parameters: [String: Any]? public let parameters: [String: Any]?
public let isBody: Bool
public let method: String public let method: String
public let URLString: String public let URLString: String
/// Optional block to obtain a reference to the request's progress instance when available. /// Optional block to obtain a reference to the request's progress instance when available.
public var onProgressReady: ((Progress) -> Void)? public var onProgressReady: ((Progress) -> Void)?
required public init(method: String, URLString: String, parameters: [String: Any]?, isBody: Bool, headers: [String: String] = [:]) { required public init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) {
self.method = method self.method = method
self.URLString = URLString self.URLString = URLString
self.parameters = parameters self.parameters = parameters
self.isBody = isBody
self.headers = headers self.headers = headers
addHeaders(PetstoreClientAPI.customHeaders) addHeaders(PetstoreClientAPI.customHeaders)

View File

@ -40,9 +40,15 @@ open class AnotherFakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -38,9 +38,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Bool>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Bool>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -73,9 +79,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<OuterComposite>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<OuterComposite>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -108,9 +120,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Double>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Double>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -143,9 +161,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -178,9 +202,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -214,12 +244,18 @@ open class FakeAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"query": query.encodeToJSON() "query": query.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -254,9 +290,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -330,7 +372,7 @@ open class FakeAPI {
"date": date?.encodeToJSON(), "date": date?.encodeToJSON(),
"dateTime": dateTime?.encodeToJSON(), "dateTime": dateTime?.encodeToJSON(),
"password": password?.encodeToJSON(), "password": password?.encodeToJSON(),
"callback": callback?.encodeToJSON() "callback": callback?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -338,9 +380,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -454,7 +502,7 @@ open class FakeAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string_array": enumFormStringArray?.encodeToJSON(),
"enum_form_string": enumFormString?.encodeToJSON() "enum_form_string": enumFormString?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -465,17 +513,20 @@ open class FakeAPI {
"enum_query_string_array": enumQueryStringArray?.encodeToJSON(), "enum_query_string_array": enumQueryStringArray?.encodeToJSON(),
"enum_query_string": enumQueryString?.encodeToJSON(), "enum_query_string": enumQueryString?.encodeToJSON(),
"enum_query_integer": enumQueryInteger?.encodeToJSON(), "enum_query_integer": enumQueryInteger?.encodeToJSON(),
"enum_query_double": enumQueryDouble?.encodeToJSON() "enum_query_double": enumQueryDouble?.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [ let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
"enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(),
"enum_header_string": enumHeaderString?.encodeToJSON() "enum_header_string": enumHeaderString?.encodeToJSON(),
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -523,17 +574,19 @@ open class FakeAPI {
"required_string_group": requiredStringGroup.encodeToJSON(), "required_string_group": requiredStringGroup.encodeToJSON(),
"required_int64_group": requiredInt64Group.encodeToJSON(), "required_int64_group": requiredInt64Group.encodeToJSON(),
"string_group": stringGroup?.encodeToJSON(), "string_group": stringGroup?.encodeToJSON(),
"int64_group": int64Group?.encodeToJSON() "int64_group": int64Group?.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [ let nillableHeaders: [String: Any?] = [
"required_boolean_group": requiredBooleanGroup.encodeToJSON(), "required_boolean_group": requiredBooleanGroup.encodeToJSON(),
"boolean_group": booleanGroup?.encodeToJSON() "boolean_group": booleanGroup?.encodeToJSON(),
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -567,9 +620,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -603,7 +662,7 @@ open class FakeAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"param": param.encodeToJSON(), "param": param.encodeToJSON(),
"param2": param2.encodeToJSON() "param2": param2.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -611,9 +670,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -43,9 +43,15 @@ open class FakeClassnameTags123API {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -42,9 +42,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -85,14 +91,16 @@ open class PetAPI {
let parameters: [String: Any]? = nil let parameters: [String: Any]? = nil
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [ let nillableHeaders: [String: Any?] = [
"api_key": apiKey?.encodeToJSON() "api_key": apiKey?.encodeToJSON(),
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -139,12 +147,18 @@ open class PetAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"status": status.encodeToJSON() "status": status.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -184,12 +198,18 @@ open class PetAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"tags": tags.encodeToJSON() "tags": tags.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -230,9 +250,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Pet>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Pet>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -269,9 +295,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -313,7 +345,7 @@ open class PetAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"name": name?.encodeToJSON(), "name": name?.encodeToJSON(),
"status": status?.encodeToJSON() "status": status?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -321,9 +353,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -365,7 +403,7 @@ open class PetAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata?.encodeToJSON(), "additionalMetadata": additionalMetadata?.encodeToJSON(),
"file": file?.encodeToJSON() "file": file?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -373,9 +411,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "multipart/form-data",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -417,7 +461,7 @@ open class PetAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata?.encodeToJSON(), "additionalMetadata": additionalMetadata?.encodeToJSON(),
"requiredFile": requiredFile.encodeToJSON() "requiredFile": requiredFile.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -425,9 +469,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "multipart/form-data",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -43,9 +43,15 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -72,7 +78,7 @@ open class StoreAPI {
- API Key: - API Key:
- type: apiKey api_key - type: apiKey api_key
- name: api_key - name: api_key
- returns: RequestBuilder<[String:Int]> - returns: RequestBuilder<[String: Int]>
*/ */
open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> {
let path = "/store/inventory" let path = "/store/inventory"
@ -81,9 +87,15 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -121,9 +133,15 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -157,9 +175,15 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -40,9 +40,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -76,9 +82,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -112,9 +124,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -152,9 +170,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -191,9 +215,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<User>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<User>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -231,12 +261,18 @@ open class UserAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"username": username.encodeToJSON(), "username": username.encodeToJSON(),
"password": password.encodeToJSON() "password": password.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -268,9 +304,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -310,9 +352,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -21,8 +21,8 @@ class AlamofireRequestBuilderFactory: RequestBuilderFactory {
private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManager>() private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManager>()
open class AlamofireRequestBuilder<T>: RequestBuilder<T> { open class AlamofireRequestBuilder<T>: RequestBuilder<T> {
required public init(method: String, URLString: String, parameters: [String: Any]?, isBody: Bool, headers: [String: String] = [:]) { required public init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) {
super.init(method: method, URLString: URLString, parameters: parameters, isBody: isBody, headers: headers) super.init(method: method, URLString: URLString, parameters: parameters, headers: headers)
} }
/** /**
@ -39,7 +39,20 @@ open class AlamofireRequestBuilder<T>: RequestBuilder<T> {
May be overridden by a subclass if you want to custom request constructor. May be overridden by a subclass if you want to custom request constructor.
*/ */
open func createURLRequest() -> URLRequest? { open func createURLRequest() -> URLRequest? {
let encoding: ParameterEncoding = isBody ? JSONDataEncoding() : URLEncoding() guard let xMethod = Alamofire.HTTPMethod(rawValue: method) else {
fatalError("Unsuported Http method - \(method)")
}
let encoding: ParameterEncoding
switch xMethod {
case .get, .head:
encoding = URLEncoding()
case .options, .post, .put, .patch, .delete, .trace, .connect:
encoding = JSONDataEncoding()
}
guard let originalRequest = try? URLRequest(url: URLString, method: HTTPMethod(rawValue: method)!, headers: buildHeaders()) else { return nil } guard let originalRequest = try? URLRequest(url: URLString, method: HTTPMethod(rawValue: method)!, headers: buildHeaders()) else { return nil }
return try? encoding.encode(originalRequest, with: parameters) return try? encoding.encode(originalRequest, with: parameters)
} }
@ -64,56 +77,73 @@ open class AlamofireRequestBuilder<T>: RequestBuilder<T> {
} }
override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) { override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
let managerId: String = UUID().uuidString let managerId = UUID().uuidString
// Create a new manager for each request to customize its request header // Create a new manager for each request to customize its request header
let manager = createSessionManager() let manager = createSessionManager()
managerStore[managerId] = manager managerStore[managerId] = manager
let encoding: ParameterEncoding = isBody ? JSONDataEncoding() : URLEncoding() guard let xMethod = Alamofire.HTTPMethod(rawValue: method) else {
fatalError("Unsuported Http method - \(method)")
}
let xMethod = Alamofire.HTTPMethod(rawValue: method) let encoding: ParameterEncoding?
let fileKeys = parameters == nil ? [] : parameters!.filter { $1 is NSURL }
.map { $0.0 }
if fileKeys.count > 0 { switch xMethod {
manager.upload(multipartFormData: { mpForm in case .get, .head:
for (k, v) in self.parameters! { encoding = URLEncoding()
switch v {
case let fileURL as URL: case .options, .post, .put, .patch, .delete, .trace, .connect:
if let mimeType = self.contentTypeForFormPart(fileURL: fileURL) { let contentType = headers["Content-Type"] ?? "application/json"
mpForm.append(fileURL, withName: k, fileName: fileURL.lastPathComponent, mimeType: mimeType)
} else { if contentType == "application/json" {
mpForm.append(fileURL, withName: k) encoding = JSONDataEncoding()
} else if contentType == "multipart/form-data" {
encoding = nil
manager.upload(multipartFormData: { mpForm in
for (k, v) in self.parameters! {
switch v {
case let fileURL as URL:
if let mimeType = self.contentTypeForFormPart(fileURL: fileURL) {
mpForm.append(fileURL, withName: k, fileName: fileURL.lastPathComponent, mimeType: mimeType)
} else {
mpForm.append(fileURL, withName: k)
}
case let string as String:
mpForm.append(string.data(using: String.Encoding.utf8)!, withName: k)
case let number as NSNumber:
mpForm.append(number.stringValue.data(using: String.Encoding.utf8)!, withName: k)
default:
fatalError("Unprocessable value \(v) with key \(k)")
} }
case let string as String:
mpForm.append(string.data(using: String.Encoding.utf8)!, withName: k)
case let number as NSNumber:
mpForm.append(number.stringValue.data(using: String.Encoding.utf8)!, withName: k)
default:
fatalError("Unprocessable value \(v) with key \(k)")
} }
} }, to: URLString, method: xMethod, headers: nil, encodingCompletion: { encodingResult in
}, to: URLString, method: xMethod!, headers: nil, encodingCompletion: { encodingResult in switch encodingResult {
switch encodingResult { case .success(let upload, _, _):
case .success(let upload, _, _): if let onProgressReady = self.onProgressReady {
if let onProgressReady = self.onProgressReady { onProgressReady(upload.uploadProgress)
onProgressReady(upload.uploadProgress) }
self.processRequest(request: upload, managerId, apiResponseQueue, completion)
case .failure(let encodingError):
apiResponseQueue.async {
completion(.failure(ErrorResponse.error(415, nil, nil, encodingError)))
}
} }
self.processRequest(request: upload, managerId, apiResponseQueue, completion) })
case .failure(let encodingError): } else if contentType == "application/x-www-form-urlencoded" {
apiResponseQueue.async { encoding = URLEncoding(destination: .httpBody)
completion(.failure(ErrorResponse.error(415, nil, nil, encodingError))) } else {
} fatalError("Unsuported Media Type - \(contentType)")
} }
}) }
} else {
let request = makeRequest(manager: manager, method: xMethod!, encoding: encoding, headers: headers) if let encoding = encoding {
let request = makeRequest(manager: manager, method: xMethod, encoding: encoding, headers: headers)
if let onProgressReady = self.onProgressReady { if let onProgressReady = self.onProgressReady {
onProgressReady(request.progress) onProgressReady(request.progress)
} }
processRequest(request: request, managerId, apiResponseQueue, completion) processRequest(request: request, managerId, apiResponseQueue, completion)
} }
} }
fileprivate func processRequest(request: DataRequest, _ managerId: String, _ apiResponseQueue: DispatchQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) { fileprivate func processRequest(request: DataRequest, _ managerId: String, _ apiResponseQueue: DispatchQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {

View File

@ -3,8 +3,8 @@
## Properties ## Properties
Name | Type | Description | Notes Name | Type | Description | Notes
------------ | ------------- | ------------- | ------------- ------------ | ------------- | ------------- | -------------
**mapString** | **[String:String]** | | [optional] **mapString** | **[String: String]** | | [optional]
**mapMapString** | [String:[String:String]] | | [optional] **mapMapString** | [String: [String: String]] | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -564,7 +564,7 @@ No authorization required
# **testInlineAdditionalProperties** # **testInlineAdditionalProperties**
```swift ```swift
open class func testInlineAdditionalProperties(param: [String:String], completion: @escaping (_ data: Void?, _ error: Error?) -> Void) open class func testInlineAdditionalProperties(param: [String: String], completion: @escaping (_ data: Void?, _ error: Error?) -> Void)
``` ```
test inline additionalProperties test inline additionalProperties
@ -574,7 +574,7 @@ test inline additionalProperties
// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new // The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new
import PetstoreClient import PetstoreClient
let param = "TODO" // [String:String] | request body let param = "TODO" // [String: String] | request body
// test inline additionalProperties // test inline additionalProperties
FakeAPI.testInlineAdditionalProperties(param: param) { (response, error) in FakeAPI.testInlineAdditionalProperties(param: param) { (response, error) in
@ -593,7 +593,7 @@ FakeAPI.testInlineAdditionalProperties(param: param) { (response, error) in
Name | Type | Description | Notes Name | Type | Description | Notes
------------- | ------------- | ------------- | ------------- ------------- | ------------- | ------------- | -------------
**param** | [**[String:String]**](String.md) | request body | **param** | [**[String: String]**](String.md) | request body |
### Return type ### Return type

View File

@ -3,9 +3,9 @@
## Properties ## Properties
Name | Type | Description | Notes Name | Type | Description | Notes
------------ | ------------- | ------------- | ------------- ------------ | ------------- | ------------- | -------------
**mapMapOfString** | [String:[String:String]] | | [optional] **mapMapOfString** | [String: [String: String]] | | [optional]
**mapOfEnumString** | **[String:String]** | | [optional] **mapOfEnumString** | **[String: String]** | | [optional]
**directMap** | **[String:Bool]** | | [optional] **directMap** | **[String: Bool]** | | [optional]
**indirectMap** | [**StringBooleanMap**](StringBooleanMap.md) | | [optional] **indirectMap** | [**StringBooleanMap**](StringBooleanMap.md) | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -5,7 +5,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | ------------- ------------ | ------------- | ------------- | -------------
**uuid** | **UUID** | | [optional] **uuid** | **UUID** | | [optional]
**dateTime** | **Date** | | [optional] **dateTime** | **Date** | | [optional]
**map** | [String:Animal] | | [optional] **map** | [String: Animal] | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -62,7 +62,7 @@ No authorization required
# **getInventory** # **getInventory**
```swift ```swift
open class func getInventory(completion: @escaping (_ data: [String:Int]?, _ error: Error?) -> Void) open class func getInventory(completion: @escaping (_ data: [String: Int]?, _ error: Error?) -> Void)
``` ```
Returns pet inventories by status Returns pet inventories by status
@ -93,7 +93,7 @@ This endpoint does not need any parameter.
### Return type ### Return type
**[String:Int]** **[String: Int]**
### Authorization ### Authorization

View File

@ -18,7 +18,6 @@ open class RequestBuilder<T> {
var credential: URLCredential? var credential: URLCredential?
var headers: [String: String] var headers: [String: String]
public let parameters: [String: Any]? public let parameters: [String: Any]?
public let isBody: Bool
public let method: String public let method: String
public let URLString: String public let URLString: String
@ -27,11 +26,10 @@ open class RequestBuilder<T> {
/// If you need to get the request's progress in older OS versions, please use Alamofire http client. /// If you need to get the request's progress in older OS versions, please use Alamofire http client.
public var onProgressReady: ((Progress) -> Void)? public var onProgressReady: ((Progress) -> Void)?
required public init(method: String, URLString: String, parameters: [String: Any]?, isBody: Bool, headers: [String: String] = [:]) { required public init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) {
self.method = method self.method = method
self.URLString = URLString self.URLString = URLString
self.parameters = parameters self.parameters = parameters
self.isBody = isBody
self.headers = headers self.headers = headers
addHeaders(PetstoreClientAPI.customHeaders) addHeaders(PetstoreClientAPI.customHeaders)

View File

@ -44,9 +44,15 @@ open class AnotherFakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -42,9 +42,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Bool>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Bool>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -80,9 +86,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<OuterComposite>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<OuterComposite>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -118,9 +130,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Double>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Double>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -156,9 +174,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -194,9 +218,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -233,12 +263,18 @@ open class FakeAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"query": query.encodeToJSON() "query": query.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -276,9 +312,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -355,7 +397,7 @@ open class FakeAPI {
"date": date?.encodeToJSON(), "date": date?.encodeToJSON(),
"dateTime": dateTime?.encodeToJSON(), "dateTime": dateTime?.encodeToJSON(),
"password": password?.encodeToJSON(), "password": password?.encodeToJSON(),
"callback": callback?.encodeToJSON() "callback": callback?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -363,9 +405,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -482,7 +530,7 @@ open class FakeAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string_array": enumFormStringArray?.encodeToJSON(),
"enum_form_string": enumFormString?.encodeToJSON() "enum_form_string": enumFormString?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -493,17 +541,20 @@ open class FakeAPI {
"enum_query_string_array": enumQueryStringArray?.encodeToJSON(), "enum_query_string_array": enumQueryStringArray?.encodeToJSON(),
"enum_query_string": enumQueryString?.encodeToJSON(), "enum_query_string": enumQueryString?.encodeToJSON(),
"enum_query_integer": enumQueryInteger?.encodeToJSON(), "enum_query_integer": enumQueryInteger?.encodeToJSON(),
"enum_query_double": enumQueryDouble?.encodeToJSON() "enum_query_double": enumQueryDouble?.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [ let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
"enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(),
"enum_header_string": enumHeaderString?.encodeToJSON() "enum_header_string": enumHeaderString?.encodeToJSON(),
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -554,17 +605,19 @@ open class FakeAPI {
"required_string_group": requiredStringGroup.encodeToJSON(), "required_string_group": requiredStringGroup.encodeToJSON(),
"required_int64_group": requiredInt64Group.encodeToJSON(), "required_int64_group": requiredInt64Group.encodeToJSON(),
"string_group": stringGroup?.encodeToJSON(), "string_group": stringGroup?.encodeToJSON(),
"int64_group": int64Group?.encodeToJSON() "int64_group": int64Group?.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [ let nillableHeaders: [String: Any?] = [
"required_boolean_group": requiredBooleanGroup.encodeToJSON(), "required_boolean_group": requiredBooleanGroup.encodeToJSON(),
"boolean_group": booleanGroup?.encodeToJSON() "boolean_group": booleanGroup?.encodeToJSON(),
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -601,9 +654,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -640,7 +699,7 @@ open class FakeAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"param": param.encodeToJSON(), "param": param.encodeToJSON(),
"param2": param2.encodeToJSON() "param2": param2.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -648,9 +707,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -47,9 +47,15 @@ open class FakeClassnameTags123API {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -46,9 +46,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -92,14 +98,16 @@ open class PetAPI {
let parameters: [String: Any]? = nil let parameters: [String: Any]? = nil
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [ let nillableHeaders: [String: Any?] = [
"api_key": apiKey?.encodeToJSON() "api_key": apiKey?.encodeToJSON(),
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -149,12 +157,18 @@ open class PetAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"status": status.encodeToJSON() "status": status.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -197,12 +211,18 @@ open class PetAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"tags": tags.encodeToJSON() "tags": tags.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -246,9 +266,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Pet>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Pet>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -288,9 +314,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -335,7 +367,7 @@ open class PetAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"name": name?.encodeToJSON(), "name": name?.encodeToJSON(),
"status": status?.encodeToJSON() "status": status?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -343,9 +375,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -390,7 +428,7 @@ open class PetAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata?.encodeToJSON(), "additionalMetadata": additionalMetadata?.encodeToJSON(),
"file": file?.encodeToJSON() "file": file?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -398,9 +436,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "multipart/form-data",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -445,7 +489,7 @@ open class PetAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata?.encodeToJSON(), "additionalMetadata": additionalMetadata?.encodeToJSON(),
"requiredFile": requiredFile.encodeToJSON() "requiredFile": requiredFile.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -453,9 +497,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "multipart/form-data",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -47,16 +47,22 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
Returns pet inventories by status Returns pet inventories by status
- parameter apiResponseQueue: The queue on which api response is dispatched. - parameter apiResponseQueue: The queue on which api response is dispatched.
- returns: AnyPublisher<[String:Int], Error> - returns: AnyPublisher<[String: Int], Error>
*/ */
@available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher<[String: Int], Error> { open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> AnyPublisher<[String: Int], Error> {
@ -79,7 +85,7 @@ open class StoreAPI {
- API Key: - API Key:
- type: apiKey api_key - type: apiKey api_key
- name: api_key - name: api_key
- returns: RequestBuilder<[String:Int]> - returns: RequestBuilder<[String: Int]>
*/ */
open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> {
let path = "/store/inventory" let path = "/store/inventory"
@ -88,9 +94,15 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -131,9 +143,15 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -170,9 +188,15 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -44,9 +44,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -83,9 +89,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -122,9 +134,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -165,9 +183,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -207,9 +231,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<User>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<User>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -250,12 +280,18 @@ open class UserAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"username": username.encodeToJSON(), "username": username.encodeToJSON(),
"password": password.encodeToJSON() "password": password.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -290,9 +326,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -335,9 +377,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -24,12 +24,6 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
open class URLSessionRequestBuilder<T>: RequestBuilder<T> { open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
private var observation: NSKeyValueObservation?
deinit {
observation?.invalidate()
}
// swiftlint:disable:next weak_delegate // swiftlint:disable:next weak_delegate
fileprivate let sessionDelegate = SessionDelegate() fileprivate let sessionDelegate = SessionDelegate()
@ -47,8 +41,8 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
@available(*, deprecated, message: "Please override execute() method to intercept and handle errors like authorization or retry the request. Check the Wiki for more info. https://github.com/OpenAPITools/openapi-generator/wiki/FAQ#how-do-i-implement-bearer-token-authentication-with-urlsession-on-the-swift-api-client") @available(*, deprecated, message: "Please override execute() method to intercept and handle errors like authorization or retry the request. Check the Wiki for more info. https://github.com/OpenAPITools/openapi-generator/wiki/FAQ#how-do-i-implement-bearer-token-authentication-with-urlsession-on-the-swift-api-client")
public var taskCompletionShouldRetry: ((Data?, URLResponse?, Error?, @escaping (Bool) -> Void) -> Void)? public var taskCompletionShouldRetry: ((Data?, URLResponse?, Error?, @escaping (Bool) -> Void) -> Void)?
required public init(method: String, URLString: String, parameters: [String: Any]?, isBody: Bool, headers: [String: String] = [:]) { required public init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) {
super.init(method: method, URLString: URLString, parameters: parameters, isBody: isBody, headers: headers) super.init(method: method, URLString: URLString, parameters: parameters, headers: headers)
} }
/** /**
@ -102,32 +96,37 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
} }
override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) { override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
let urlSessionId: String = UUID().uuidString let urlSessionId = UUID().uuidString
// Create a new manager for each request to customize its request header // Create a new manager for each request to customize its request header
let urlSession = createURLSession() let urlSession = createURLSession()
urlSessionStore[urlSessionId] = urlSession urlSessionStore[urlSessionId] = urlSession
let parameters: [String: Any] = self.parameters ?? [:]
let fileKeys = parameters.filter { $1 is URL }
.map { $0.0 }
let encoding: ParameterEncoding
if fileKeys.count > 0 {
encoding = FileUploadEncoding(contentTypeForFormPart: contentTypeForFormPart(fileURL:))
} else if isBody {
encoding = JSONDataEncoding()
} else {
encoding = URLEncoding()
}
guard let xMethod = HTTPMethod(rawValue: method) else { guard let xMethod = HTTPMethod(rawValue: method) else {
fatalError("Unsuported Http method - \(method)") fatalError("Unsuported Http method - \(method)")
} }
let encoding: ParameterEncoding
switch xMethod {
case .get, .head:
encoding = URLEncoding()
case .options, .post, .put, .patch, .delete, .trace, .connect:
let contentType = headers["Content-Type"] ?? "application/json"
if contentType == "application/json" {
encoding = JSONDataEncoding()
} else if contentType == "multipart/form-data" {
encoding = FormDataEncoding(contentTypeForFormPart: contentTypeForFormPart(fileURL:))
} else if contentType == "application/x-www-form-urlencoded" {
encoding = FormURLEncoding()
} else {
fatalError("Unsuported Media Type - \(contentType)")
}
}
let cleanupRequest = { let cleanupRequest = {
urlSessionStore[urlSessionId] = nil urlSessionStore[urlSessionId] = nil
self.observation?.invalidate()
} }
do { do {
@ -171,7 +170,6 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
completion(.failure(ErrorResponse.error(415, nil, nil, error))) completion(.failure(ErrorResponse.error(415, nil, nil, error)))
} }
} }
} }
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) { fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
@ -426,7 +424,7 @@ private class URLEncoding: ParameterEncoding {
} }
} }
private class FileUploadEncoding: ParameterEncoding { private class FormDataEncoding: ParameterEncoding {
let contentTypeForFormPart: (_ fileURL: URL) -> String? let contentTypeForFormPart: (_ fileURL: URL) -> String?
@ -570,7 +568,25 @@ private class FileUploadEncoding: ParameterEncoding {
} }
fileprivate extension Data { private class FormURLEncoding: ParameterEncoding {
func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest {
var urlRequest = urlRequest
var requestBodyComponents = URLComponents()
requestBodyComponents.queryItems = APIHelper.mapValuesToQueryItems(parameters ?? [:])
if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil {
urlRequest.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
}
urlRequest.httpBody = requestBodyComponents.query?.data(using: .utf8)
return urlRequest
}
}
private extension Data {
/// Append string to Data /// Append string to Data
/// ///
/// Rather than littering my code with calls to `dataUsingEncoding` to convert strings to Data, and then add that data to the Data, this wraps it in a nice convenient little extension to Data. This converts using UTF-8. /// Rather than littering my code with calls to `dataUsingEncoding` to convert strings to Data, and then add that data to the Data, this wraps it in a nice convenient little extension to Data. This converts using UTF-8.
@ -584,7 +600,7 @@ fileprivate extension Data {
} }
} }
fileprivate extension Optional where Wrapped == Data { private extension Optional where Wrapped == Data {
var orEmpty: Data { var orEmpty: Data {
self ?? Data() self ?? Data()
} }

View File

@ -3,8 +3,8 @@
## Properties ## Properties
Name | Type | Description | Notes Name | Type | Description | Notes
------------ | ------------- | ------------- | ------------- ------------ | ------------- | ------------- | -------------
**mapString** | **[String:String]** | | [optional] **mapString** | **[String: String]** | | [optional]
**mapMapString** | [String:[String:String]] | | [optional] **mapMapString** | [String: [String: String]] | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -564,7 +564,7 @@ No authorization required
# **testInlineAdditionalProperties** # **testInlineAdditionalProperties**
```swift ```swift
open class func testInlineAdditionalProperties(param: [String:String], completion: @escaping (_ data: Void?, _ error: Error?) -> Void) open class func testInlineAdditionalProperties(param: [String: String], completion: @escaping (_ data: Void?, _ error: Error?) -> Void)
``` ```
test inline additionalProperties test inline additionalProperties
@ -574,7 +574,7 @@ test inline additionalProperties
// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new // The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new
import PetstoreClient import PetstoreClient
let param = "TODO" // [String:String] | request body let param = "TODO" // [String: String] | request body
// test inline additionalProperties // test inline additionalProperties
FakeAPI.testInlineAdditionalProperties(param: param) { (response, error) in FakeAPI.testInlineAdditionalProperties(param: param) { (response, error) in
@ -593,7 +593,7 @@ FakeAPI.testInlineAdditionalProperties(param: param) { (response, error) in
Name | Type | Description | Notes Name | Type | Description | Notes
------------- | ------------- | ------------- | ------------- ------------- | ------------- | ------------- | -------------
**param** | [**[String:String]**](String.md) | request body | **param** | [**[String: String]**](String.md) | request body |
### Return type ### Return type

View File

@ -3,9 +3,9 @@
## Properties ## Properties
Name | Type | Description | Notes Name | Type | Description | Notes
------------ | ------------- | ------------- | ------------- ------------ | ------------- | ------------- | -------------
**mapMapOfString** | [String:[String:String]] | | [optional] **mapMapOfString** | [String: [String: String]] | | [optional]
**mapOfEnumString** | **[String:String]** | | [optional] **mapOfEnumString** | **[String: String]** | | [optional]
**directMap** | **[String:Bool]** | | [optional] **directMap** | **[String: Bool]** | | [optional]
**indirectMap** | [**StringBooleanMap**](StringBooleanMap.md) | | [optional] **indirectMap** | [**StringBooleanMap**](StringBooleanMap.md) | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -5,7 +5,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | ------------- ------------ | ------------- | ------------- | -------------
**uuid** | **UUID** | | [optional] **uuid** | **UUID** | | [optional]
**dateTime** | **Date** | | [optional] **dateTime** | **Date** | | [optional]
**map** | [String:Animal] | | [optional] **map** | [String: Animal] | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -62,7 +62,7 @@ No authorization required
# **getInventory** # **getInventory**
```swift ```swift
open class func getInventory(completion: @escaping (_ data: [String:Int]?, _ error: Error?) -> Void) open class func getInventory(completion: @escaping (_ data: [String: Int]?, _ error: Error?) -> Void)
``` ```
Returns pet inventories by status Returns pet inventories by status
@ -93,7 +93,7 @@ This endpoint does not need any parameter.
### Return type ### Return type
**[String:Int]** **[String: Int]**
### Authorization ### Authorization

View File

@ -18,7 +18,6 @@ open class RequestBuilder<T> {
var credential: URLCredential? var credential: URLCredential?
var headers: [String: String] var headers: [String: String]
public let parameters: [String: Any]? public let parameters: [String: Any]?
public let isBody: Bool
public let method: String public let method: String
public let URLString: String public let URLString: String
@ -27,11 +26,10 @@ open class RequestBuilder<T> {
/// If you need to get the request's progress in older OS versions, please use Alamofire http client. /// If you need to get the request's progress in older OS versions, please use Alamofire http client.
public var onProgressReady: ((Progress) -> Void)? public var onProgressReady: ((Progress) -> Void)?
required public init(method: String, URLString: String, parameters: [String: Any]?, isBody: Bool, headers: [String: String] = [:]) { required public init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) {
self.method = method self.method = method
self.URLString = URLString self.URLString = URLString
self.parameters = parameters self.parameters = parameters
self.isBody = isBody
self.headers = headers self.headers = headers
addHeaders(PetstoreClientAPI.customHeaders) addHeaders(PetstoreClientAPI.customHeaders)

View File

@ -40,9 +40,15 @@ open class AnotherFakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -38,9 +38,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Bool>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Bool>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -73,9 +79,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<OuterComposite>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<OuterComposite>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -108,9 +120,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Double>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Double>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -143,9 +161,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -178,9 +202,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -214,12 +244,18 @@ open class FakeAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"query": query.encodeToJSON() "query": query.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -254,9 +290,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -330,7 +372,7 @@ open class FakeAPI {
"date": date?.encodeToJSON(), "date": date?.encodeToJSON(),
"dateTime": dateTime?.encodeToJSON(), "dateTime": dateTime?.encodeToJSON(),
"password": password?.encodeToJSON(), "password": password?.encodeToJSON(),
"callback": callback?.encodeToJSON() "callback": callback?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -338,9 +380,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -454,7 +502,7 @@ open class FakeAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string_array": enumFormStringArray?.encodeToJSON(),
"enum_form_string": enumFormString?.encodeToJSON() "enum_form_string": enumFormString?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -465,17 +513,20 @@ open class FakeAPI {
"enum_query_string_array": enumQueryStringArray?.encodeToJSON(), "enum_query_string_array": enumQueryStringArray?.encodeToJSON(),
"enum_query_string": enumQueryString?.encodeToJSON(), "enum_query_string": enumQueryString?.encodeToJSON(),
"enum_query_integer": enumQueryInteger?.encodeToJSON(), "enum_query_integer": enumQueryInteger?.encodeToJSON(),
"enum_query_double": enumQueryDouble?.encodeToJSON() "enum_query_double": enumQueryDouble?.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [ let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
"enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(),
"enum_header_string": enumHeaderString?.encodeToJSON() "enum_header_string": enumHeaderString?.encodeToJSON(),
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -523,17 +574,19 @@ open class FakeAPI {
"required_string_group": requiredStringGroup.encodeToJSON(), "required_string_group": requiredStringGroup.encodeToJSON(),
"required_int64_group": requiredInt64Group.encodeToJSON(), "required_int64_group": requiredInt64Group.encodeToJSON(),
"string_group": stringGroup?.encodeToJSON(), "string_group": stringGroup?.encodeToJSON(),
"int64_group": int64Group?.encodeToJSON() "int64_group": int64Group?.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [ let nillableHeaders: [String: Any?] = [
"required_boolean_group": requiredBooleanGroup.encodeToJSON(), "required_boolean_group": requiredBooleanGroup.encodeToJSON(),
"boolean_group": booleanGroup?.encodeToJSON() "boolean_group": booleanGroup?.encodeToJSON(),
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -567,9 +620,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -603,7 +662,7 @@ open class FakeAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"param": param.encodeToJSON(), "param": param.encodeToJSON(),
"param2": param2.encodeToJSON() "param2": param2.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -611,9 +670,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -43,9 +43,15 @@ open class FakeClassnameTags123API {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -42,9 +42,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -85,14 +91,16 @@ open class PetAPI {
let parameters: [String: Any]? = nil let parameters: [String: Any]? = nil
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [ let nillableHeaders: [String: Any?] = [
"api_key": apiKey?.encodeToJSON() "api_key": apiKey?.encodeToJSON(),
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -139,12 +147,18 @@ open class PetAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"status": status.encodeToJSON() "status": status.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -184,12 +198,18 @@ open class PetAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"tags": tags.encodeToJSON() "tags": tags.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -230,9 +250,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Pet>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Pet>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -269,9 +295,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -313,7 +345,7 @@ open class PetAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"name": name?.encodeToJSON(), "name": name?.encodeToJSON(),
"status": status?.encodeToJSON() "status": status?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -321,9 +353,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -365,7 +403,7 @@ open class PetAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata?.encodeToJSON(), "additionalMetadata": additionalMetadata?.encodeToJSON(),
"file": file?.encodeToJSON() "file": file?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -373,9 +411,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "multipart/form-data",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -417,7 +461,7 @@ open class PetAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata?.encodeToJSON(), "additionalMetadata": additionalMetadata?.encodeToJSON(),
"requiredFile": requiredFile.encodeToJSON() "requiredFile": requiredFile.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -425,9 +469,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "multipart/form-data",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -43,9 +43,15 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -72,7 +78,7 @@ open class StoreAPI {
- API Key: - API Key:
- type: apiKey api_key - type: apiKey api_key
- name: api_key - name: api_key
- returns: RequestBuilder<[String:Int]> - returns: RequestBuilder<[String: Int]>
*/ */
open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> {
let path = "/store/inventory" let path = "/store/inventory"
@ -81,9 +87,15 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -121,9 +133,15 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -157,9 +175,15 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -40,9 +40,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -76,9 +82,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -112,9 +124,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -152,9 +170,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -191,9 +215,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<User>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<User>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -231,12 +261,18 @@ open class UserAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"username": username.encodeToJSON(), "username": username.encodeToJSON(),
"password": password.encodeToJSON() "password": password.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -268,9 +304,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -310,9 +352,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -24,12 +24,6 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
open class URLSessionRequestBuilder<T>: RequestBuilder<T> { open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
private var observation: NSKeyValueObservation?
deinit {
observation?.invalidate()
}
// swiftlint:disable:next weak_delegate // swiftlint:disable:next weak_delegate
fileprivate let sessionDelegate = SessionDelegate() fileprivate let sessionDelegate = SessionDelegate()
@ -47,8 +41,8 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
@available(*, deprecated, message: "Please override execute() method to intercept and handle errors like authorization or retry the request. Check the Wiki for more info. https://github.com/OpenAPITools/openapi-generator/wiki/FAQ#how-do-i-implement-bearer-token-authentication-with-urlsession-on-the-swift-api-client") @available(*, deprecated, message: "Please override execute() method to intercept and handle errors like authorization or retry the request. Check the Wiki for more info. https://github.com/OpenAPITools/openapi-generator/wiki/FAQ#how-do-i-implement-bearer-token-authentication-with-urlsession-on-the-swift-api-client")
public var taskCompletionShouldRetry: ((Data?, URLResponse?, Error?, @escaping (Bool) -> Void) -> Void)? public var taskCompletionShouldRetry: ((Data?, URLResponse?, Error?, @escaping (Bool) -> Void) -> Void)?
required public init(method: String, URLString: String, parameters: [String: Any]?, isBody: Bool, headers: [String: String] = [:]) { required public init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) {
super.init(method: method, URLString: URLString, parameters: parameters, isBody: isBody, headers: headers) super.init(method: method, URLString: URLString, parameters: parameters, headers: headers)
} }
/** /**
@ -102,32 +96,37 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
} }
override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) { override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
let urlSessionId: String = UUID().uuidString let urlSessionId = UUID().uuidString
// Create a new manager for each request to customize its request header // Create a new manager for each request to customize its request header
let urlSession = createURLSession() let urlSession = createURLSession()
urlSessionStore[urlSessionId] = urlSession urlSessionStore[urlSessionId] = urlSession
let parameters: [String: Any] = self.parameters ?? [:]
let fileKeys = parameters.filter { $1 is URL }
.map { $0.0 }
let encoding: ParameterEncoding
if fileKeys.count > 0 {
encoding = FileUploadEncoding(contentTypeForFormPart: contentTypeForFormPart(fileURL:))
} else if isBody {
encoding = JSONDataEncoding()
} else {
encoding = URLEncoding()
}
guard let xMethod = HTTPMethod(rawValue: method) else { guard let xMethod = HTTPMethod(rawValue: method) else {
fatalError("Unsuported Http method - \(method)") fatalError("Unsuported Http method - \(method)")
} }
let encoding: ParameterEncoding
switch xMethod {
case .get, .head:
encoding = URLEncoding()
case .options, .post, .put, .patch, .delete, .trace, .connect:
let contentType = headers["Content-Type"] ?? "application/json"
if contentType == "application/json" {
encoding = JSONDataEncoding()
} else if contentType == "multipart/form-data" {
encoding = FormDataEncoding(contentTypeForFormPart: contentTypeForFormPart(fileURL:))
} else if contentType == "application/x-www-form-urlencoded" {
encoding = FormURLEncoding()
} else {
fatalError("Unsuported Media Type - \(contentType)")
}
}
let cleanupRequest = { let cleanupRequest = {
urlSessionStore[urlSessionId] = nil urlSessionStore[urlSessionId] = nil
self.observation?.invalidate()
} }
do { do {
@ -171,7 +170,6 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
completion(.failure(ErrorResponse.error(415, nil, nil, error))) completion(.failure(ErrorResponse.error(415, nil, nil, error)))
} }
} }
} }
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) { fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
@ -426,7 +424,7 @@ private class URLEncoding: ParameterEncoding {
} }
} }
private class FileUploadEncoding: ParameterEncoding { private class FormDataEncoding: ParameterEncoding {
let contentTypeForFormPart: (_ fileURL: URL) -> String? let contentTypeForFormPart: (_ fileURL: URL) -> String?
@ -570,7 +568,25 @@ private class FileUploadEncoding: ParameterEncoding {
} }
fileprivate extension Data { private class FormURLEncoding: ParameterEncoding {
func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest {
var urlRequest = urlRequest
var requestBodyComponents = URLComponents()
requestBodyComponents.queryItems = APIHelper.mapValuesToQueryItems(parameters ?? [:])
if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil {
urlRequest.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
}
urlRequest.httpBody = requestBodyComponents.query?.data(using: .utf8)
return urlRequest
}
}
private extension Data {
/// Append string to Data /// Append string to Data
/// ///
/// Rather than littering my code with calls to `dataUsingEncoding` to convert strings to Data, and then add that data to the Data, this wraps it in a nice convenient little extension to Data. This converts using UTF-8. /// Rather than littering my code with calls to `dataUsingEncoding` to convert strings to Data, and then add that data to the Data, this wraps it in a nice convenient little extension to Data. This converts using UTF-8.
@ -584,7 +600,7 @@ fileprivate extension Data {
} }
} }
fileprivate extension Optional where Wrapped == Data { private extension Optional where Wrapped == Data {
var orEmpty: Data { var orEmpty: Data {
self ?? Data() self ?? Data()
} }

View File

@ -3,8 +3,8 @@
## Properties ## Properties
Name | Type | Description | Notes Name | Type | Description | Notes
------------ | ------------- | ------------- | ------------- ------------ | ------------- | ------------- | -------------
**mapString** | **[String:String]** | | [optional] **mapString** | **[String: String]** | | [optional]
**mapMapString** | [String:[String:String]] | | [optional] **mapMapString** | [String: [String: String]] | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -564,7 +564,7 @@ No authorization required
# **testInlineAdditionalProperties** # **testInlineAdditionalProperties**
```swift ```swift
open class func testInlineAdditionalProperties(param: [String:String], completion: @escaping (_ data: Void?, _ error: Error?) -> Void) open class func testInlineAdditionalProperties(param: [String: String], completion: @escaping (_ data: Void?, _ error: Error?) -> Void)
``` ```
test inline additionalProperties test inline additionalProperties
@ -574,7 +574,7 @@ test inline additionalProperties
// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new // The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new
import PetstoreClient import PetstoreClient
let param = "TODO" // [String:String] | request body let param = "TODO" // [String: String] | request body
// test inline additionalProperties // test inline additionalProperties
FakeAPI.testInlineAdditionalProperties(param: param) { (response, error) in FakeAPI.testInlineAdditionalProperties(param: param) { (response, error) in
@ -593,7 +593,7 @@ FakeAPI.testInlineAdditionalProperties(param: param) { (response, error) in
Name | Type | Description | Notes Name | Type | Description | Notes
------------- | ------------- | ------------- | ------------- ------------- | ------------- | ------------- | -------------
**param** | [**[String:String]**](String.md) | request body | **param** | [**[String: String]**](String.md) | request body |
### Return type ### Return type

View File

@ -3,9 +3,9 @@
## Properties ## Properties
Name | Type | Description | Notes Name | Type | Description | Notes
------------ | ------------- | ------------- | ------------- ------------ | ------------- | ------------- | -------------
**mapMapOfString** | [String:[String:String]] | | [optional] **mapMapOfString** | [String: [String: String]] | | [optional]
**mapOfEnumString** | **[String:String]** | | [optional] **mapOfEnumString** | **[String: String]** | | [optional]
**directMap** | **[String:Bool]** | | [optional] **directMap** | **[String: Bool]** | | [optional]
**indirectMap** | [**StringBooleanMap**](StringBooleanMap.md) | | [optional] **indirectMap** | [**StringBooleanMap**](StringBooleanMap.md) | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -5,7 +5,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | ------------- ------------ | ------------- | ------------- | -------------
**uuid** | **UUID** | | [optional] **uuid** | **UUID** | | [optional]
**dateTime** | **Date** | | [optional] **dateTime** | **Date** | | [optional]
**map** | [String:Animal] | | [optional] **map** | [String: Animal] | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -62,7 +62,7 @@ No authorization required
# **getInventory** # **getInventory**
```swift ```swift
open class func getInventory(completion: @escaping (_ data: [String:Int]?, _ error: Error?) -> Void) open class func getInventory(completion: @escaping (_ data: [String: Int]?, _ error: Error?) -> Void)
``` ```
Returns pet inventories by status Returns pet inventories by status
@ -93,7 +93,7 @@ This endpoint does not need any parameter.
### Return type ### Return type
**[String:Int]** **[String: Int]**
### Authorization ### Authorization

View File

@ -18,7 +18,6 @@ open class RequestBuilder<T> {
var credential: URLCredential? var credential: URLCredential?
var headers: [String: String] var headers: [String: String]
public let parameters: [String: Any]? public let parameters: [String: Any]?
public let isBody: Bool
public let method: String public let method: String
public let URLString: String public let URLString: String
@ -27,11 +26,10 @@ open class RequestBuilder<T> {
/// If you need to get the request's progress in older OS versions, please use Alamofire http client. /// If you need to get the request's progress in older OS versions, please use Alamofire http client.
public var onProgressReady: ((Progress) -> Void)? public var onProgressReady: ((Progress) -> Void)?
required public init(method: String, URLString: String, parameters: [String: Any]?, isBody: Bool, headers: [String: String] = [:]) { required public init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) {
self.method = method self.method = method
self.URLString = URLString self.URLString = URLString
self.parameters = parameters self.parameters = parameters
self.isBody = isBody
self.headers = headers self.headers = headers
addHeaders(PetstoreClientAPI.customHeaders) addHeaders(PetstoreClientAPI.customHeaders)

View File

@ -42,9 +42,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -85,14 +91,16 @@ open class PetAPI {
let parameters: [String: Any]? = nil let parameters: [String: Any]? = nil
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [ let nillableHeaders: [String: Any?] = [
"api_key": apiKey?.encodeToJSON() "api_key": apiKey?.encodeToJSON(),
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -139,12 +147,18 @@ open class PetAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"status": status.encodeToJSON() "status": status.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -184,12 +198,18 @@ open class PetAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"tags": tags.encodeToJSON() "tags": tags.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -230,9 +250,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Pet>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Pet>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -269,9 +295,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -313,7 +345,7 @@ open class PetAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"name": name?.encodeToJSON(), "name": name?.encodeToJSON(),
"status": status?.encodeToJSON() "status": status?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -321,9 +353,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -365,7 +403,7 @@ open class PetAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata?.encodeToJSON(), "additionalMetadata": additionalMetadata?.encodeToJSON(),
"file": file?.encodeToJSON() "file": file?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -373,9 +411,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "multipart/form-data",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -43,9 +43,15 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -72,7 +78,7 @@ open class StoreAPI {
- API Key: - API Key:
- type: apiKey api_key - type: apiKey api_key
- name: api_key - name: api_key
- returns: RequestBuilder<[String:Int]> - returns: RequestBuilder<[String: Int]>
*/ */
open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> {
let path = "/store/inventory" let path = "/store/inventory"
@ -81,9 +87,15 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -121,9 +133,15 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -157,9 +175,15 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -43,9 +43,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -82,9 +88,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -121,9 +133,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -164,9 +182,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -203,9 +227,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<User>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<User>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -243,12 +273,18 @@ open class UserAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"username": username.encodeToJSON(), "username": username.encodeToJSON(),
"password": password.encodeToJSON() "password": password.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -283,9 +319,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -328,9 +370,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -18,7 +18,6 @@ public struct Pet: Codable {
public var id: Int64? public var id: Int64?
public var category: Category? public var category: Category?
public var name: String? public var name: String?
@available(*, deprecated, message: "This property is deprecated.") @available(*, deprecated, message: "This property is deprecated.")
public var photoUrls: [String] public var photoUrls: [String]
public var tags: [Tag]? public var tags: [Tag]?

View File

@ -24,12 +24,6 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
open class URLSessionRequestBuilder<T>: RequestBuilder<T> { open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
private var observation: NSKeyValueObservation?
deinit {
observation?.invalidate()
}
// swiftlint:disable:next weak_delegate // swiftlint:disable:next weak_delegate
fileprivate let sessionDelegate = SessionDelegate() fileprivate let sessionDelegate = SessionDelegate()
@ -47,8 +41,8 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
@available(*, deprecated, message: "Please override execute() method to intercept and handle errors like authorization or retry the request. Check the Wiki for more info. https://github.com/OpenAPITools/openapi-generator/wiki/FAQ#how-do-i-implement-bearer-token-authentication-with-urlsession-on-the-swift-api-client") @available(*, deprecated, message: "Please override execute() method to intercept and handle errors like authorization or retry the request. Check the Wiki for more info. https://github.com/OpenAPITools/openapi-generator/wiki/FAQ#how-do-i-implement-bearer-token-authentication-with-urlsession-on-the-swift-api-client")
public var taskCompletionShouldRetry: ((Data?, URLResponse?, Error?, @escaping (Bool) -> Void) -> Void)? public var taskCompletionShouldRetry: ((Data?, URLResponse?, Error?, @escaping (Bool) -> Void) -> Void)?
required public init(method: String, URLString: String, parameters: [String: Any]?, isBody: Bool, headers: [String: String] = [:]) { required public init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) {
super.init(method: method, URLString: URLString, parameters: parameters, isBody: isBody, headers: headers) super.init(method: method, URLString: URLString, parameters: parameters, headers: headers)
} }
/** /**
@ -102,32 +96,37 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
} }
override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) { override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
let urlSessionId: String = UUID().uuidString let urlSessionId = UUID().uuidString
// Create a new manager for each request to customize its request header // Create a new manager for each request to customize its request header
let urlSession = createURLSession() let urlSession = createURLSession()
urlSessionStore[urlSessionId] = urlSession urlSessionStore[urlSessionId] = urlSession
let parameters: [String: Any] = self.parameters ?? [:]
let fileKeys = parameters.filter { $1 is URL }
.map { $0.0 }
let encoding: ParameterEncoding
if fileKeys.count > 0 {
encoding = FileUploadEncoding(contentTypeForFormPart: contentTypeForFormPart(fileURL:))
} else if isBody {
encoding = JSONDataEncoding()
} else {
encoding = URLEncoding()
}
guard let xMethod = HTTPMethod(rawValue: method) else { guard let xMethod = HTTPMethod(rawValue: method) else {
fatalError("Unsuported Http method - \(method)") fatalError("Unsuported Http method - \(method)")
} }
let encoding: ParameterEncoding
switch xMethod {
case .get, .head:
encoding = URLEncoding()
case .options, .post, .put, .patch, .delete, .trace, .connect:
let contentType = headers["Content-Type"] ?? "application/json"
if contentType == "application/json" {
encoding = JSONDataEncoding()
} else if contentType == "multipart/form-data" {
encoding = FormDataEncoding(contentTypeForFormPart: contentTypeForFormPart(fileURL:))
} else if contentType == "application/x-www-form-urlencoded" {
encoding = FormURLEncoding()
} else {
fatalError("Unsuported Media Type - \(contentType)")
}
}
let cleanupRequest = { let cleanupRequest = {
urlSessionStore[urlSessionId] = nil urlSessionStore[urlSessionId] = nil
self.observation?.invalidate()
} }
do { do {
@ -171,7 +170,6 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
completion(.failure(ErrorResponse.error(415, nil, nil, error))) completion(.failure(ErrorResponse.error(415, nil, nil, error)))
} }
} }
} }
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) { fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
@ -426,7 +424,7 @@ private class URLEncoding: ParameterEncoding {
} }
} }
private class FileUploadEncoding: ParameterEncoding { private class FormDataEncoding: ParameterEncoding {
let contentTypeForFormPart: (_ fileURL: URL) -> String? let contentTypeForFormPart: (_ fileURL: URL) -> String?
@ -570,7 +568,25 @@ private class FileUploadEncoding: ParameterEncoding {
} }
fileprivate extension Data { private class FormURLEncoding: ParameterEncoding {
func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest {
var urlRequest = urlRequest
var requestBodyComponents = URLComponents()
requestBodyComponents.queryItems = APIHelper.mapValuesToQueryItems(parameters ?? [:])
if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil {
urlRequest.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
}
urlRequest.httpBody = requestBodyComponents.query?.data(using: .utf8)
return urlRequest
}
}
private extension Data {
/// Append string to Data /// Append string to Data
/// ///
/// Rather than littering my code with calls to `dataUsingEncoding` to convert strings to Data, and then add that data to the Data, this wraps it in a nice convenient little extension to Data. This converts using UTF-8. /// Rather than littering my code with calls to `dataUsingEncoding` to convert strings to Data, and then add that data to the Data, this wraps it in a nice convenient little extension to Data. This converts using UTF-8.
@ -584,7 +600,7 @@ fileprivate extension Data {
} }
} }
fileprivate extension Optional where Wrapped == Data { private extension Optional where Wrapped == Data {
var orEmpty: Data { var orEmpty: Data {
self ?? Data() self ?? Data()
} }

View File

@ -62,7 +62,7 @@ No authorization required
# **getInventory** # **getInventory**
```swift ```swift
open class func getInventory(completion: @escaping (_ data: [String:Int]?, _ error: Error?) -> Void) open class func getInventory(completion: @escaping (_ data: [String: Int]?, _ error: Error?) -> Void)
``` ```
Returns pet inventories by status Returns pet inventories by status
@ -93,7 +93,7 @@ This endpoint does not need any parameter.
### Return type ### Return type
**[String:Int]** **[String: Int]**
### Authorization ### Authorization

View File

@ -18,7 +18,6 @@ internal class RequestBuilder<T> {
var credential: URLCredential? var credential: URLCredential?
var headers: [String: String] var headers: [String: String]
internal let parameters: [String: Any]? internal let parameters: [String: Any]?
internal let isBody: Bool
internal let method: String internal let method: String
internal let URLString: String internal let URLString: String
@ -27,11 +26,10 @@ internal class RequestBuilder<T> {
/// If you need to get the request's progress in older OS versions, please use Alamofire http client. /// If you need to get the request's progress in older OS versions, please use Alamofire http client.
internal var onProgressReady: ((Progress) -> Void)? internal var onProgressReady: ((Progress) -> Void)?
required internal init(method: String, URLString: String, parameters: [String: Any]?, isBody: Bool, headers: [String: String] = [:]) { required internal init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) {
self.method = method self.method = method
self.URLString = URLString self.URLString = URLString
self.parameters = parameters self.parameters = parameters
self.isBody = isBody
self.headers = headers self.headers = headers
addHeaders(PetstoreClientAPI.customHeaders) addHeaders(PetstoreClientAPI.customHeaders)

View File

@ -40,9 +40,15 @@ internal class AnotherFakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -38,9 +38,15 @@ internal class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Bool>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Bool>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -73,9 +79,15 @@ internal class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<OuterComposite>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<OuterComposite>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -108,9 +120,15 @@ internal class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Double>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Double>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -143,9 +161,15 @@ internal class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -178,9 +202,15 @@ internal class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -214,12 +244,18 @@ internal class FakeAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"query": query.encodeToJSON() "query": query.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -254,9 +290,15 @@ internal class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -330,7 +372,7 @@ internal class FakeAPI {
"date": date?.encodeToJSON(), "date": date?.encodeToJSON(),
"dateTime": dateTime?.encodeToJSON(), "dateTime": dateTime?.encodeToJSON(),
"password": password?.encodeToJSON(), "password": password?.encodeToJSON(),
"callback": callback?.encodeToJSON() "callback": callback?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -338,9 +380,15 @@ internal class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -454,7 +502,7 @@ internal class FakeAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string_array": enumFormStringArray?.encodeToJSON(),
"enum_form_string": enumFormString?.encodeToJSON() "enum_form_string": enumFormString?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -465,17 +513,20 @@ internal class FakeAPI {
"enum_query_string_array": enumQueryStringArray?.encodeToJSON(), "enum_query_string_array": enumQueryStringArray?.encodeToJSON(),
"enum_query_string": enumQueryString?.encodeToJSON(), "enum_query_string": enumQueryString?.encodeToJSON(),
"enum_query_integer": enumQueryInteger?.encodeToJSON(), "enum_query_integer": enumQueryInteger?.encodeToJSON(),
"enum_query_double": enumQueryDouble?.encodeToJSON() "enum_query_double": enumQueryDouble?.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [ let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
"enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(),
"enum_header_string": enumHeaderString?.encodeToJSON() "enum_header_string": enumHeaderString?.encodeToJSON(),
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -523,17 +574,19 @@ internal class FakeAPI {
"required_string_group": requiredStringGroup.encodeToJSON(), "required_string_group": requiredStringGroup.encodeToJSON(),
"required_int64_group": requiredInt64Group.encodeToJSON(), "required_int64_group": requiredInt64Group.encodeToJSON(),
"string_group": stringGroup?.encodeToJSON(), "string_group": stringGroup?.encodeToJSON(),
"int64_group": int64Group?.encodeToJSON() "int64_group": int64Group?.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [ let nillableHeaders: [String: Any?] = [
"required_boolean_group": requiredBooleanGroup.encodeToJSON(), "required_boolean_group": requiredBooleanGroup.encodeToJSON(),
"boolean_group": booleanGroup?.encodeToJSON() "boolean_group": booleanGroup?.encodeToJSON(),
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -567,9 +620,15 @@ internal class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -603,7 +662,7 @@ internal class FakeAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"param": param.encodeToJSON(), "param": param.encodeToJSON(),
"param2": param2.encodeToJSON() "param2": param2.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -611,9 +670,15 @@ internal class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -43,9 +43,15 @@ internal class FakeClassnameTags123API {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -42,9 +42,15 @@ internal class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -85,14 +91,16 @@ internal class PetAPI {
let parameters: [String: Any]? = nil let parameters: [String: Any]? = nil
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [ let nillableHeaders: [String: Any?] = [
"api_key": apiKey?.encodeToJSON() "api_key": apiKey?.encodeToJSON(),
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -139,12 +147,18 @@ internal class PetAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"status": status.encodeToJSON() "status": status.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -184,12 +198,18 @@ internal class PetAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"tags": tags.encodeToJSON() "tags": tags.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -230,9 +250,15 @@ internal class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Pet>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Pet>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -269,9 +295,15 @@ internal class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -313,7 +345,7 @@ internal class PetAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"name": name?.encodeToJSON(), "name": name?.encodeToJSON(),
"status": status?.encodeToJSON() "status": status?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -321,9 +353,15 @@ internal class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -365,7 +403,7 @@ internal class PetAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata?.encodeToJSON(), "additionalMetadata": additionalMetadata?.encodeToJSON(),
"file": file?.encodeToJSON() "file": file?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -373,9 +411,15 @@ internal class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "multipart/form-data",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -417,7 +461,7 @@ internal class PetAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata?.encodeToJSON(), "additionalMetadata": additionalMetadata?.encodeToJSON(),
"requiredFile": requiredFile.encodeToJSON() "requiredFile": requiredFile.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -425,9 +469,15 @@ internal class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "multipart/form-data",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -43,9 +43,15 @@ internal class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -72,7 +78,7 @@ internal class StoreAPI {
- API Key: - API Key:
- type: apiKey api_key - type: apiKey api_key
- name: api_key - name: api_key
- returns: RequestBuilder<[String:Int]> - returns: RequestBuilder<[String: Int]>
*/ */
internal class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { internal class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> {
let path = "/store/inventory" let path = "/store/inventory"
@ -81,9 +87,15 @@ internal class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -121,9 +133,15 @@ internal class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -157,9 +175,15 @@ internal class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -40,9 +40,15 @@ internal class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -76,9 +82,15 @@ internal class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -112,9 +124,15 @@ internal class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -152,9 +170,15 @@ internal class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -191,9 +215,15 @@ internal class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<User>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<User>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -231,12 +261,18 @@ internal class UserAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"username": username.encodeToJSON(), "username": username.encodeToJSON(),
"password": password.encodeToJSON() "password": password.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -268,9 +304,15 @@ internal class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -310,9 +352,15 @@ internal class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -24,12 +24,6 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
internal class URLSessionRequestBuilder<T>: RequestBuilder<T> { internal class URLSessionRequestBuilder<T>: RequestBuilder<T> {
private var observation: NSKeyValueObservation?
deinit {
observation?.invalidate()
}
// swiftlint:disable:next weak_delegate // swiftlint:disable:next weak_delegate
fileprivate let sessionDelegate = SessionDelegate() fileprivate let sessionDelegate = SessionDelegate()
@ -47,8 +41,8 @@ internal class URLSessionRequestBuilder<T>: RequestBuilder<T> {
@available(*, deprecated, message: "Please override execute() method to intercept and handle errors like authorization or retry the request. Check the Wiki for more info. https://github.com/OpenAPITools/openapi-generator/wiki/FAQ#how-do-i-implement-bearer-token-authentication-with-urlsession-on-the-swift-api-client") @available(*, deprecated, message: "Please override execute() method to intercept and handle errors like authorization or retry the request. Check the Wiki for more info. https://github.com/OpenAPITools/openapi-generator/wiki/FAQ#how-do-i-implement-bearer-token-authentication-with-urlsession-on-the-swift-api-client")
internal var taskCompletionShouldRetry: ((Data?, URLResponse?, Error?, @escaping (Bool) -> Void) -> Void)? internal var taskCompletionShouldRetry: ((Data?, URLResponse?, Error?, @escaping (Bool) -> Void) -> Void)?
required internal init(method: String, URLString: String, parameters: [String: Any]?, isBody: Bool, headers: [String: String] = [:]) { required internal init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) {
super.init(method: method, URLString: URLString, parameters: parameters, isBody: isBody, headers: headers) super.init(method: method, URLString: URLString, parameters: parameters, headers: headers)
} }
/** /**
@ -102,32 +96,37 @@ internal class URLSessionRequestBuilder<T>: RequestBuilder<T> {
} }
override internal func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) { override internal func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
let urlSessionId: String = UUID().uuidString let urlSessionId = UUID().uuidString
// Create a new manager for each request to customize its request header // Create a new manager for each request to customize its request header
let urlSession = createURLSession() let urlSession = createURLSession()
urlSessionStore[urlSessionId] = urlSession urlSessionStore[urlSessionId] = urlSession
let parameters: [String: Any] = self.parameters ?? [:]
let fileKeys = parameters.filter { $1 is URL }
.map { $0.0 }
let encoding: ParameterEncoding
if fileKeys.count > 0 {
encoding = FileUploadEncoding(contentTypeForFormPart: contentTypeForFormPart(fileURL:))
} else if isBody {
encoding = JSONDataEncoding()
} else {
encoding = URLEncoding()
}
guard let xMethod = HTTPMethod(rawValue: method) else { guard let xMethod = HTTPMethod(rawValue: method) else {
fatalError("Unsuported Http method - \(method)") fatalError("Unsuported Http method - \(method)")
} }
let encoding: ParameterEncoding
switch xMethod {
case .get, .head:
encoding = URLEncoding()
case .options, .post, .put, .patch, .delete, .trace, .connect:
let contentType = headers["Content-Type"] ?? "application/json"
if contentType == "application/json" {
encoding = JSONDataEncoding()
} else if contentType == "multipart/form-data" {
encoding = FormDataEncoding(contentTypeForFormPart: contentTypeForFormPart(fileURL:))
} else if contentType == "application/x-www-form-urlencoded" {
encoding = FormURLEncoding()
} else {
fatalError("Unsuported Media Type - \(contentType)")
}
}
let cleanupRequest = { let cleanupRequest = {
urlSessionStore[urlSessionId] = nil urlSessionStore[urlSessionId] = nil
self.observation?.invalidate()
} }
do { do {
@ -171,7 +170,6 @@ internal class URLSessionRequestBuilder<T>: RequestBuilder<T> {
completion(.failure(ErrorResponse.error(415, nil, nil, error))) completion(.failure(ErrorResponse.error(415, nil, nil, error)))
} }
} }
} }
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) { fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
@ -426,7 +424,7 @@ private class URLEncoding: ParameterEncoding {
} }
} }
private class FileUploadEncoding: ParameterEncoding { private class FormDataEncoding: ParameterEncoding {
let contentTypeForFormPart: (_ fileURL: URL) -> String? let contentTypeForFormPart: (_ fileURL: URL) -> String?
@ -570,7 +568,25 @@ private class FileUploadEncoding: ParameterEncoding {
} }
fileprivate extension Data { private class FormURLEncoding: ParameterEncoding {
func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest {
var urlRequest = urlRequest
var requestBodyComponents = URLComponents()
requestBodyComponents.queryItems = APIHelper.mapValuesToQueryItems(parameters ?? [:])
if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil {
urlRequest.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
}
urlRequest.httpBody = requestBodyComponents.query?.data(using: .utf8)
return urlRequest
}
}
private extension Data {
/// Append string to Data /// Append string to Data
/// ///
/// Rather than littering my code with calls to `dataUsingEncoding` to convert strings to Data, and then add that data to the Data, this wraps it in a nice convenient little extension to Data. This converts using UTF-8. /// Rather than littering my code with calls to `dataUsingEncoding` to convert strings to Data, and then add that data to the Data, this wraps it in a nice convenient little extension to Data. This converts using UTF-8.
@ -584,7 +600,7 @@ fileprivate extension Data {
} }
} }
fileprivate extension Optional where Wrapped == Data { private extension Optional where Wrapped == Data {
var orEmpty: Data { var orEmpty: Data {
self ?? Data() self ?? Data()
} }

View File

@ -3,8 +3,8 @@
## Properties ## Properties
Name | Type | Description | Notes Name | Type | Description | Notes
------------ | ------------- | ------------- | ------------- ------------ | ------------- | ------------- | -------------
**mapString** | **[String:String]** | | [optional] **mapString** | **[String: String]** | | [optional]
**mapMapString** | [String:[String:String]] | | [optional] **mapMapString** | [String: [String: String]] | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -564,7 +564,7 @@ No authorization required
# **testInlineAdditionalProperties** # **testInlineAdditionalProperties**
```swift ```swift
internal class func testInlineAdditionalProperties(param: [String:String], completion: @escaping (_ data: Void?, _ error: Error?) -> Void) internal class func testInlineAdditionalProperties(param: [String: String], completion: @escaping (_ data: Void?, _ error: Error?) -> Void)
``` ```
test inline additionalProperties test inline additionalProperties
@ -574,7 +574,7 @@ test inline additionalProperties
// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new // The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new
import PetstoreClient import PetstoreClient
let param = "TODO" // [String:String] | request body let param = "TODO" // [String: String] | request body
// test inline additionalProperties // test inline additionalProperties
FakeAPI.testInlineAdditionalProperties(param: param) { (response, error) in FakeAPI.testInlineAdditionalProperties(param: param) { (response, error) in
@ -593,7 +593,7 @@ FakeAPI.testInlineAdditionalProperties(param: param) { (response, error) in
Name | Type | Description | Notes Name | Type | Description | Notes
------------- | ------------- | ------------- | ------------- ------------- | ------------- | ------------- | -------------
**param** | [**[String:String]**](String.md) | request body | **param** | [**[String: String]**](String.md) | request body |
### Return type ### Return type

View File

@ -3,9 +3,9 @@
## Properties ## Properties
Name | Type | Description | Notes Name | Type | Description | Notes
------------ | ------------- | ------------- | ------------- ------------ | ------------- | ------------- | -------------
**mapMapOfString** | [String:[String:String]] | | [optional] **mapMapOfString** | [String: [String: String]] | | [optional]
**mapOfEnumString** | **[String:String]** | | [optional] **mapOfEnumString** | **[String: String]** | | [optional]
**directMap** | **[String:Bool]** | | [optional] **directMap** | **[String: Bool]** | | [optional]
**indirectMap** | [**StringBooleanMap**](StringBooleanMap.md) | | [optional] **indirectMap** | [**StringBooleanMap**](StringBooleanMap.md) | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -5,7 +5,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | ------------- ------------ | ------------- | ------------- | -------------
**uuid** | **UUID** | | [optional] **uuid** | **UUID** | | [optional]
**dateTime** | **Date** | | [optional] **dateTime** | **Date** | | [optional]
**map** | [String:Animal] | | [optional] **map** | [String: Animal] | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -62,7 +62,7 @@ No authorization required
# **getInventory** # **getInventory**
```swift ```swift
internal class func getInventory(completion: @escaping (_ data: [String:Int]?, _ error: Error?) -> Void) internal class func getInventory(completion: @escaping (_ data: [String: Int]?, _ error: Error?) -> Void)
``` ```
Returns pet inventories by status Returns pet inventories by status
@ -93,7 +93,7 @@ This endpoint does not need any parameter.
### Return type ### Return type
**[String:Int]** **[String: Int]**
### Authorization ### Authorization

View File

@ -18,7 +18,6 @@ open class RequestBuilder<T> {
var credential: URLCredential? var credential: URLCredential?
var headers: [String: String] var headers: [String: String]
public let parameters: [String: Any]? public let parameters: [String: Any]?
public let isBody: Bool
public let method: String public let method: String
public let URLString: String public let URLString: String
@ -27,11 +26,10 @@ open class RequestBuilder<T> {
/// If you need to get the request's progress in older OS versions, please use Alamofire http client. /// If you need to get the request's progress in older OS versions, please use Alamofire http client.
public var onProgressReady: ((Progress) -> Void)? public var onProgressReady: ((Progress) -> Void)?
required public init(method: String, URLString: String, parameters: [String: Any]?, isBody: Bool, headers: [String: String] = [:]) { required public init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) {
self.method = method self.method = method
self.URLString = URLString self.URLString = URLString
self.parameters = parameters self.parameters = parameters
self.isBody = isBody
self.headers = headers self.headers = headers
addHeaders(PetstoreClientAPI.customHeaders) addHeaders(PetstoreClientAPI.customHeaders)

View File

@ -7,7 +7,7 @@
import Foundation import Foundation
@objc open class AnotherFakeAPI: NSObject { @objc open class AnotherFakeAPI : NSObject {
/** /**
To test special tags To test special tags
@ -40,9 +40,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -7,7 +7,7 @@
import Foundation import Foundation
@objc open class FakeAPI: NSObject { @objc open class FakeAPI : NSObject {
/** /**
- parameter body: (body) Input boolean as post body (optional) - parameter body: (body) Input boolean as post body (optional)
@ -38,9 +38,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Bool>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Bool>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -73,9 +79,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<OuterComposite>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<OuterComposite>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -108,9 +120,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Double>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Double>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -143,9 +161,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -178,9 +202,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -214,12 +244,18 @@ import Foundation
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"query": query.encodeToJSON() "query": query.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -254,9 +290,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -330,7 +372,7 @@ import Foundation
"date": date?.encodeToJSON(), "date": date?.encodeToJSON(),
"dateTime": dateTime?.encodeToJSON(), "dateTime": dateTime?.encodeToJSON(),
"password": password?.encodeToJSON(), "password": password?.encodeToJSON(),
"callback": callback?.encodeToJSON() "callback": callback?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -338,9 +380,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -454,7 +502,7 @@ import Foundation
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string_array": enumFormStringArray?.encodeToJSON(),
"enum_form_string": enumFormString?.encodeToJSON() "enum_form_string": enumFormString?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -465,17 +513,20 @@ import Foundation
"enum_query_string_array": enumQueryStringArray?.encodeToJSON(), "enum_query_string_array": enumQueryStringArray?.encodeToJSON(),
"enum_query_string": enumQueryString?.encodeToJSON(), "enum_query_string": enumQueryString?.encodeToJSON(),
"enum_query_integer": enumQueryInteger?.encodeToJSON(), "enum_query_integer": enumQueryInteger?.encodeToJSON(),
"enum_query_double": enumQueryDouble?.encodeToJSON() "enum_query_double": enumQueryDouble?.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [ let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
"enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(),
"enum_header_string": enumHeaderString?.encodeToJSON() "enum_header_string": enumHeaderString?.encodeToJSON(),
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -523,17 +574,19 @@ import Foundation
"required_string_group": requiredStringGroup.encodeToJSON(), "required_string_group": requiredStringGroup.encodeToJSON(),
"required_int64_group": requiredInt64Group.encodeToJSON(), "required_int64_group": requiredInt64Group.encodeToJSON(),
"string_group": stringGroup?.encodeToJSON(), "string_group": stringGroup?.encodeToJSON(),
"int64_group": int64Group?.encodeToJSON() "int64_group": int64Group?.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [ let nillableHeaders: [String: Any?] = [
"required_boolean_group": requiredBooleanGroup.encodeToJSON(), "required_boolean_group": requiredBooleanGroup.encodeToJSON(),
"boolean_group": booleanGroup?.encodeToJSON() "boolean_group": booleanGroup?.encodeToJSON(),
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -567,9 +620,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -603,7 +662,7 @@ import Foundation
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"param": param.encodeToJSON(), "param": param.encodeToJSON(),
"param2": param2.encodeToJSON() "param2": param2.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -611,9 +670,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -7,7 +7,7 @@
import Foundation import Foundation
@objc open class FakeClassnameTags123API: NSObject { @objc open class FakeClassnameTags123API : NSObject {
/** /**
To test class name in snake case To test class name in snake case
@ -43,9 +43,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -7,7 +7,7 @@
import Foundation import Foundation
@objc open class PetAPI: NSObject { @objc open class PetAPI : NSObject {
/** /**
Add a new pet to the store Add a new pet to the store
@ -42,9 +42,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -85,14 +91,16 @@ import Foundation
let parameters: [String: Any]? = nil let parameters: [String: Any]? = nil
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [ let nillableHeaders: [String: Any?] = [
"api_key": apiKey?.encodeToJSON() "api_key": apiKey?.encodeToJSON(),
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -139,12 +147,18 @@ import Foundation
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"status": status.encodeToJSON() "status": status.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -184,12 +198,18 @@ import Foundation
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"tags": tags.encodeToJSON() "tags": tags.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -230,9 +250,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Pet>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Pet>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -269,9 +295,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -313,7 +345,7 @@ import Foundation
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"name": name?.encodeToJSON(), "name": name?.encodeToJSON(),
"status": status?.encodeToJSON() "status": status?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -321,9 +353,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -365,7 +403,7 @@ import Foundation
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata?.encodeToJSON(), "additionalMetadata": additionalMetadata?.encodeToJSON(),
"file": file?.encodeToJSON() "file": file?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -373,9 +411,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "multipart/form-data",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -417,7 +461,7 @@ import Foundation
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata?.encodeToJSON(), "additionalMetadata": additionalMetadata?.encodeToJSON(),
"requiredFile": requiredFile.encodeToJSON() "requiredFile": requiredFile.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -425,9 +469,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "multipart/form-data",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -7,7 +7,7 @@
import Foundation import Foundation
@objc open class StoreAPI: NSObject { @objc open class StoreAPI : NSObject {
/** /**
Delete purchase order by ID Delete purchase order by ID
@ -43,9 +43,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -72,7 +78,7 @@ import Foundation
- API Key: - API Key:
- type: apiKey api_key - type: apiKey api_key
- name: api_key - name: api_key
- returns: RequestBuilder<[String:Int]> - returns: RequestBuilder<[String: Int]>
*/ */
open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> {
let path = "/store/inventory" let path = "/store/inventory"
@ -81,9 +87,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -121,9 +133,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -157,9 +175,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -7,7 +7,7 @@
import Foundation import Foundation
@objc open class UserAPI: NSObject { @objc open class UserAPI : NSObject {
/** /**
Create user Create user
@ -40,9 +40,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -76,9 +82,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -112,9 +124,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -152,9 +170,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -191,9 +215,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<User>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<User>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -231,12 +261,18 @@ import Foundation
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"username": username.encodeToJSON(), "username": username.encodeToJSON(),
"password": password.encodeToJSON() "password": password.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -268,9 +304,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -310,9 +352,15 @@ import Foundation
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -24,12 +24,6 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
open class URLSessionRequestBuilder<T>: RequestBuilder<T> { open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
private var observation: NSKeyValueObservation?
deinit {
observation?.invalidate()
}
// swiftlint:disable:next weak_delegate // swiftlint:disable:next weak_delegate
fileprivate let sessionDelegate = SessionDelegate() fileprivate let sessionDelegate = SessionDelegate()
@ -47,8 +41,8 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
@available(*, deprecated, message: "Please override execute() method to intercept and handle errors like authorization or retry the request. Check the Wiki for more info. https://github.com/OpenAPITools/openapi-generator/wiki/FAQ#how-do-i-implement-bearer-token-authentication-with-urlsession-on-the-swift-api-client") @available(*, deprecated, message: "Please override execute() method to intercept and handle errors like authorization or retry the request. Check the Wiki for more info. https://github.com/OpenAPITools/openapi-generator/wiki/FAQ#how-do-i-implement-bearer-token-authentication-with-urlsession-on-the-swift-api-client")
public var taskCompletionShouldRetry: ((Data?, URLResponse?, Error?, @escaping (Bool) -> Void) -> Void)? public var taskCompletionShouldRetry: ((Data?, URLResponse?, Error?, @escaping (Bool) -> Void) -> Void)?
required public init(method: String, URLString: String, parameters: [String: Any]?, isBody: Bool, headers: [String: String] = [:]) { required public init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) {
super.init(method: method, URLString: URLString, parameters: parameters, isBody: isBody, headers: headers) super.init(method: method, URLString: URLString, parameters: parameters, headers: headers)
} }
/** /**
@ -102,32 +96,37 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
} }
override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) { override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
let urlSessionId: String = UUID().uuidString let urlSessionId = UUID().uuidString
// Create a new manager for each request to customize its request header // Create a new manager for each request to customize its request header
let urlSession = createURLSession() let urlSession = createURLSession()
urlSessionStore[urlSessionId] = urlSession urlSessionStore[urlSessionId] = urlSession
let parameters: [String: Any] = self.parameters ?? [:]
let fileKeys = parameters.filter { $1 is URL }
.map { $0.0 }
let encoding: ParameterEncoding
if fileKeys.count > 0 {
encoding = FileUploadEncoding(contentTypeForFormPart: contentTypeForFormPart(fileURL:))
} else if isBody {
encoding = JSONDataEncoding()
} else {
encoding = URLEncoding()
}
guard let xMethod = HTTPMethod(rawValue: method) else { guard let xMethod = HTTPMethod(rawValue: method) else {
fatalError("Unsuported Http method - \(method)") fatalError("Unsuported Http method - \(method)")
} }
let encoding: ParameterEncoding
switch xMethod {
case .get, .head:
encoding = URLEncoding()
case .options, .post, .put, .patch, .delete, .trace, .connect:
let contentType = headers["Content-Type"] ?? "application/json"
if contentType == "application/json" {
encoding = JSONDataEncoding()
} else if contentType == "multipart/form-data" {
encoding = FormDataEncoding(contentTypeForFormPart: contentTypeForFormPart(fileURL:))
} else if contentType == "application/x-www-form-urlencoded" {
encoding = FormURLEncoding()
} else {
fatalError("Unsuported Media Type - \(contentType)")
}
}
let cleanupRequest = { let cleanupRequest = {
urlSessionStore[urlSessionId] = nil urlSessionStore[urlSessionId] = nil
self.observation?.invalidate()
} }
do { do {
@ -171,7 +170,6 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
completion(.failure(ErrorResponse.error(415, nil, nil, error))) completion(.failure(ErrorResponse.error(415, nil, nil, error)))
} }
} }
} }
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) { fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
@ -426,7 +424,7 @@ private class URLEncoding: ParameterEncoding {
} }
} }
private class FileUploadEncoding: ParameterEncoding { private class FormDataEncoding: ParameterEncoding {
let contentTypeForFormPart: (_ fileURL: URL) -> String? let contentTypeForFormPart: (_ fileURL: URL) -> String?
@ -570,7 +568,25 @@ private class FileUploadEncoding: ParameterEncoding {
} }
fileprivate extension Data { private class FormURLEncoding: ParameterEncoding {
func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest {
var urlRequest = urlRequest
var requestBodyComponents = URLComponents()
requestBodyComponents.queryItems = APIHelper.mapValuesToQueryItems(parameters ?? [:])
if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil {
urlRequest.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
}
urlRequest.httpBody = requestBodyComponents.query?.data(using: .utf8)
return urlRequest
}
}
private extension Data {
/// Append string to Data /// Append string to Data
/// ///
/// Rather than littering my code with calls to `dataUsingEncoding` to convert strings to Data, and then add that data to the Data, this wraps it in a nice convenient little extension to Data. This converts using UTF-8. /// Rather than littering my code with calls to `dataUsingEncoding` to convert strings to Data, and then add that data to the Data, this wraps it in a nice convenient little extension to Data. This converts using UTF-8.
@ -584,7 +600,7 @@ fileprivate extension Data {
} }
} }
fileprivate extension Optional where Wrapped == Data { private extension Optional where Wrapped == Data {
var orEmpty: Data { var orEmpty: Data {
self ?? Data() self ?? Data()
} }

View File

@ -3,8 +3,8 @@
## Properties ## Properties
Name | Type | Description | Notes Name | Type | Description | Notes
------------ | ------------- | ------------- | ------------- ------------ | ------------- | ------------- | -------------
**mapString** | **[String:String]** | | [optional] **mapString** | **[String: String]** | | [optional]
**mapMapString** | [String:[String:String]] | | [optional] **mapMapString** | [String: [String: String]] | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -564,7 +564,7 @@ No authorization required
# **testInlineAdditionalProperties** # **testInlineAdditionalProperties**
```swift ```swift
open class func testInlineAdditionalProperties(param: [String:String], completion: @escaping (_ data: Void?, _ error: Error?) -> Void) open class func testInlineAdditionalProperties(param: [String: String], completion: @escaping (_ data: Void?, _ error: Error?) -> Void)
``` ```
test inline additionalProperties test inline additionalProperties
@ -574,7 +574,7 @@ test inline additionalProperties
// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new // The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new
import PetstoreClient import PetstoreClient
let param = "TODO" // [String:String] | request body let param = "TODO" // [String: String] | request body
// test inline additionalProperties // test inline additionalProperties
FakeAPI.testInlineAdditionalProperties(param: param) { (response, error) in FakeAPI.testInlineAdditionalProperties(param: param) { (response, error) in
@ -593,7 +593,7 @@ FakeAPI.testInlineAdditionalProperties(param: param) { (response, error) in
Name | Type | Description | Notes Name | Type | Description | Notes
------------- | ------------- | ------------- | ------------- ------------- | ------------- | ------------- | -------------
**param** | [**[String:String]**](String.md) | request body | **param** | [**[String: String]**](String.md) | request body |
### Return type ### Return type

View File

@ -3,9 +3,9 @@
## Properties ## Properties
Name | Type | Description | Notes Name | Type | Description | Notes
------------ | ------------- | ------------- | ------------- ------------ | ------------- | ------------- | -------------
**mapMapOfString** | [String:[String:String]] | | [optional] **mapMapOfString** | [String: [String: String]] | | [optional]
**mapOfEnumString** | **[String:String]** | | [optional] **mapOfEnumString** | **[String: String]** | | [optional]
**directMap** | **[String:Bool]** | | [optional] **directMap** | **[String: Bool]** | | [optional]
**indirectMap** | [**StringBooleanMap**](StringBooleanMap.md) | | [optional] **indirectMap** | [**StringBooleanMap**](StringBooleanMap.md) | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -5,7 +5,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | ------------- ------------ | ------------- | ------------- | -------------
**uuid** | **UUID** | | [optional] **uuid** | **UUID** | | [optional]
**dateTime** | **Date** | | [optional] **dateTime** | **Date** | | [optional]
**map** | [String:Animal] | | [optional] **map** | [String: Animal] | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -62,7 +62,7 @@ No authorization required
# **getInventory** # **getInventory**
```swift ```swift
open class func getInventory(completion: @escaping (_ data: [String:Int]?, _ error: Error?) -> Void) open class func getInventory(completion: @escaping (_ data: [String: Int]?, _ error: Error?) -> Void)
``` ```
Returns pet inventories by status Returns pet inventories by status
@ -93,7 +93,7 @@ This endpoint does not need any parameter.
### Return type ### Return type
**[String:Int]** **[String: Int]**
### Authorization ### Authorization

View File

@ -18,7 +18,6 @@ open class RequestBuilder<T> {
var credential: URLCredential? var credential: URLCredential?
var headers: [String: String] var headers: [String: String]
public let parameters: [String: Any]? public let parameters: [String: Any]?
public let isBody: Bool
public let method: String public let method: String
public let URLString: String public let URLString: String
@ -27,11 +26,10 @@ open class RequestBuilder<T> {
/// If you need to get the request's progress in older OS versions, please use Alamofire http client. /// If you need to get the request's progress in older OS versions, please use Alamofire http client.
public var onProgressReady: ((Progress) -> Void)? public var onProgressReady: ((Progress) -> Void)?
required public init(method: String, URLString: String, parameters: [String: Any]?, isBody: Bool, headers: [String: String] = [:]) { required public init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) {
self.method = method self.method = method
self.URLString = URLString self.URLString = URLString
self.parameters = parameters self.parameters = parameters
self.isBody = isBody
self.headers = headers self.headers = headers
addHeaders(PetstoreClientAPI.customHeaders) addHeaders(PetstoreClientAPI.customHeaders)

View File

@ -43,9 +43,15 @@ open class AnotherFakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -41,9 +41,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Bool>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Bool>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -78,9 +84,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<OuterComposite>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<OuterComposite>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -115,9 +127,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Double>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Double>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -152,9 +170,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -189,9 +213,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -201,7 +231,7 @@ open class FakeAPI {
- parameter apiResponseQueue: The queue on which api response is dispatched. - parameter apiResponseQueue: The queue on which api response is dispatched.
- returns: Promise<Void> - returns: Promise<Void>
*/ */
open class func testBodyWithQueryParams( query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<Void> { open class func testBodyWithQueryParams( query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<Void> {
let deferred = Promise<Void>.pending() let deferred = Promise<Void>.pending()
testBodyWithQueryParamsWithRequestBuilder(query: query, body: body).execute(apiResponseQueue) { result -> Void in testBodyWithQueryParamsWithRequestBuilder(query: query, body: body).execute(apiResponseQueue) { result -> Void in
switch result { switch result {
@ -227,12 +257,18 @@ open class FakeAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"query": query.encodeToJSON() "query": query.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -269,9 +305,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -294,7 +336,7 @@ open class FakeAPI {
- parameter apiResponseQueue: The queue on which api response is dispatched. - parameter apiResponseQueue: The queue on which api response is dispatched.
- returns: Promise<Void> - returns: Promise<Void>
*/ */
open class func testEndpointParameters( number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<Void> { open class func testEndpointParameters( number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<Void> {
let deferred = Promise<Void>.pending() let deferred = Promise<Void>.pending()
testEndpointParametersWithRequestBuilder(number: number, double: double, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, integer: integer, int32: int32, int64: int64, float: float, string: string, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback).execute(apiResponseQueue) { result -> Void in testEndpointParametersWithRequestBuilder(number: number, double: double, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, integer: integer, int32: int32, int64: int64, float: float, string: string, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback).execute(apiResponseQueue) { result -> Void in
switch result { switch result {
@ -347,7 +389,7 @@ open class FakeAPI {
"date": date?.encodeToJSON(), "date": date?.encodeToJSON(),
"dateTime": dateTime?.encodeToJSON(), "dateTime": dateTime?.encodeToJSON(),
"password": password?.encodeToJSON(), "password": password?.encodeToJSON(),
"callback": callback?.encodeToJSON() "callback": callback?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -355,9 +397,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -441,7 +489,7 @@ open class FakeAPI {
- parameter apiResponseQueue: The queue on which api response is dispatched. - parameter apiResponseQueue: The queue on which api response is dispatched.
- returns: Promise<Void> - returns: Promise<Void>
*/ */
open class func testEnumParameters( enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<Void> { open class func testEnumParameters( enumHeaderStringArray: [String]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [String]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [String]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<Void> {
let deferred = Promise<Void>.pending() let deferred = Promise<Void>.pending()
testEnumParametersWithRequestBuilder(enumHeaderStringArray: enumHeaderStringArray, enumHeaderString: enumHeaderString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble, enumFormStringArray: enumFormStringArray, enumFormString: enumFormString).execute(apiResponseQueue) { result -> Void in testEnumParametersWithRequestBuilder(enumHeaderStringArray: enumHeaderStringArray, enumHeaderString: enumHeaderString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble, enumFormStringArray: enumFormStringArray, enumFormString: enumFormString).execute(apiResponseQueue) { result -> Void in
switch result { switch result {
@ -473,7 +521,7 @@ open class FakeAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string_array": enumFormStringArray?.encodeToJSON(),
"enum_form_string": enumFormString?.encodeToJSON() "enum_form_string": enumFormString?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -484,17 +532,20 @@ open class FakeAPI {
"enum_query_string_array": enumQueryStringArray?.encodeToJSON(), "enum_query_string_array": enumQueryStringArray?.encodeToJSON(),
"enum_query_string": enumQueryString?.encodeToJSON(), "enum_query_string": enumQueryString?.encodeToJSON(),
"enum_query_integer": enumQueryInteger?.encodeToJSON(), "enum_query_integer": enumQueryInteger?.encodeToJSON(),
"enum_query_double": enumQueryDouble?.encodeToJSON() "enum_query_double": enumQueryDouble?.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [ let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
"enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(),
"enum_header_string": enumHeaderString?.encodeToJSON() "enum_header_string": enumHeaderString?.encodeToJSON(),
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -509,7 +560,7 @@ open class FakeAPI {
- parameter apiResponseQueue: The queue on which api response is dispatched. - parameter apiResponseQueue: The queue on which api response is dispatched.
- returns: Promise<Void> - returns: Promise<Void>
*/ */
open class func testGroupParameters( requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<Void> { open class func testGroupParameters( requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<Void> {
let deferred = Promise<Void>.pending() let deferred = Promise<Void>.pending()
testGroupParametersWithRequestBuilder(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group).execute(apiResponseQueue) { result -> Void in testGroupParametersWithRequestBuilder(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group).execute(apiResponseQueue) { result -> Void in
switch result { switch result {
@ -544,17 +595,19 @@ open class FakeAPI {
"required_string_group": requiredStringGroup.encodeToJSON(), "required_string_group": requiredStringGroup.encodeToJSON(),
"required_int64_group": requiredInt64Group.encodeToJSON(), "required_int64_group": requiredInt64Group.encodeToJSON(),
"string_group": stringGroup?.encodeToJSON(), "string_group": stringGroup?.encodeToJSON(),
"int64_group": int64Group?.encodeToJSON() "int64_group": int64Group?.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [ let nillableHeaders: [String: Any?] = [
"required_boolean_group": requiredBooleanGroup.encodeToJSON(), "required_boolean_group": requiredBooleanGroup.encodeToJSON(),
"boolean_group": booleanGroup?.encodeToJSON() "boolean_group": booleanGroup?.encodeToJSON(),
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -590,9 +643,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -603,7 +662,7 @@ open class FakeAPI {
- parameter apiResponseQueue: The queue on which api response is dispatched. - parameter apiResponseQueue: The queue on which api response is dispatched.
- returns: Promise<Void> - returns: Promise<Void>
*/ */
open class func testJsonFormData( param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<Void> { open class func testJsonFormData( param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<Void> {
let deferred = Promise<Void>.pending() let deferred = Promise<Void>.pending()
testJsonFormDataWithRequestBuilder(param: param, param2: param2).execute(apiResponseQueue) { result -> Void in testJsonFormDataWithRequestBuilder(param: param, param2: param2).execute(apiResponseQueue) { result -> Void in
switch result { switch result {
@ -628,7 +687,7 @@ open class FakeAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"param": param.encodeToJSON(), "param": param.encodeToJSON(),
"param2": param2.encodeToJSON() "param2": param2.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -636,9 +695,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -46,9 +46,15 @@ open class FakeClassnameTags123API {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -45,9 +45,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -58,7 +64,7 @@ open class PetAPI {
- parameter apiResponseQueue: The queue on which api response is dispatched. - parameter apiResponseQueue: The queue on which api response is dispatched.
- returns: Promise<Void> - returns: Promise<Void>
*/ */
open class func deletePet( petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<Void> { open class func deletePet( petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<Void> {
let deferred = Promise<Void>.pending() let deferred = Promise<Void>.pending()
deletePetWithRequestBuilder(petId: petId, apiKey: apiKey).execute(apiResponseQueue) { result -> Void in deletePetWithRequestBuilder(petId: petId, apiKey: apiKey).execute(apiResponseQueue) { result -> Void in
switch result { switch result {
@ -90,14 +96,16 @@ open class PetAPI {
let parameters: [String: Any]? = nil let parameters: [String: Any]? = nil
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [ let nillableHeaders: [String: Any?] = [
"api_key": apiKey?.encodeToJSON() "api_key": apiKey?.encodeToJSON(),
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -146,12 +154,18 @@ open class PetAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"status": status.encodeToJSON() "status": status.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -193,12 +207,18 @@ open class PetAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"tags": tags.encodeToJSON() "tags": tags.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -241,9 +261,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Pet>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Pet>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -282,9 +308,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -296,7 +328,7 @@ open class PetAPI {
- parameter apiResponseQueue: The queue on which api response is dispatched. - parameter apiResponseQueue: The queue on which api response is dispatched.
- returns: Promise<Void> - returns: Promise<Void>
*/ */
open class func updatePetWithForm( petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<Void> { open class func updatePetWithForm( petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<Void> {
let deferred = Promise<Void>.pending() let deferred = Promise<Void>.pending()
updatePetWithFormWithRequestBuilder(petId: petId, name: name, status: status).execute(apiResponseQueue) { result -> Void in updatePetWithFormWithRequestBuilder(petId: petId, name: name, status: status).execute(apiResponseQueue) { result -> Void in
switch result { switch result {
@ -328,7 +360,7 @@ open class PetAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"name": name?.encodeToJSON(), "name": name?.encodeToJSON(),
"status": status?.encodeToJSON() "status": status?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -336,9 +368,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -350,7 +388,7 @@ open class PetAPI {
- parameter apiResponseQueue: The queue on which api response is dispatched. - parameter apiResponseQueue: The queue on which api response is dispatched.
- returns: Promise<ApiResponse> - returns: Promise<ApiResponse>
*/ */
open class func uploadFile( petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<ApiResponse> { open class func uploadFile( petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<ApiResponse> {
let deferred = Promise<ApiResponse>.pending() let deferred = Promise<ApiResponse>.pending()
uploadFileWithRequestBuilder(petId: petId, additionalMetadata: additionalMetadata, file: file).execute(apiResponseQueue) { result -> Void in uploadFileWithRequestBuilder(petId: petId, additionalMetadata: additionalMetadata, file: file).execute(apiResponseQueue) { result -> Void in
switch result { switch result {
@ -382,7 +420,7 @@ open class PetAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata?.encodeToJSON(), "additionalMetadata": additionalMetadata?.encodeToJSON(),
"file": file?.encodeToJSON() "file": file?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -390,9 +428,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "multipart/form-data",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -404,7 +448,7 @@ open class PetAPI {
- parameter apiResponseQueue: The queue on which api response is dispatched. - parameter apiResponseQueue: The queue on which api response is dispatched.
- returns: Promise<ApiResponse> - returns: Promise<ApiResponse>
*/ */
open class func uploadFileWithRequiredFile( petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<ApiResponse> { open class func uploadFileWithRequiredFile( petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<ApiResponse> {
let deferred = Promise<ApiResponse>.pending() let deferred = Promise<ApiResponse>.pending()
uploadFileWithRequiredFileWithRequestBuilder(petId: petId, requiredFile: requiredFile, additionalMetadata: additionalMetadata).execute(apiResponseQueue) { result -> Void in uploadFileWithRequiredFileWithRequestBuilder(petId: petId, requiredFile: requiredFile, additionalMetadata: additionalMetadata).execute(apiResponseQueue) { result -> Void in
switch result { switch result {
@ -436,7 +480,7 @@ open class PetAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata?.encodeToJSON(), "additionalMetadata": additionalMetadata?.encodeToJSON(),
"requiredFile": requiredFile.encodeToJSON() "requiredFile": requiredFile.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -444,9 +488,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "multipart/form-data",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -46,16 +46,22 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
Returns pet inventories by status Returns pet inventories by status
- parameter apiResponseQueue: The queue on which api response is dispatched. - parameter apiResponseQueue: The queue on which api response is dispatched.
- returns: Promise<[String:Int]> - returns: Promise<[String: Int]>
*/ */
open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<[String: Int]> { open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<[String: Int]> {
let deferred = Promise<[String: Int]>.pending() let deferred = Promise<[String: Int]>.pending()
@ -77,7 +83,7 @@ open class StoreAPI {
- API Key: - API Key:
- type: apiKey api_key - type: apiKey api_key
- name: api_key - name: api_key
- returns: RequestBuilder<[String:Int]> - returns: RequestBuilder<[String: Int]>
*/ */
open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> {
let path = "/store/inventory" let path = "/store/inventory"
@ -86,9 +92,15 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -128,9 +140,15 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -166,9 +184,15 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -43,9 +43,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -81,9 +87,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -119,9 +131,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -161,9 +179,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -202,9 +226,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<User>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<User>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -215,7 +245,7 @@ open class UserAPI {
- parameter apiResponseQueue: The queue on which api response is dispatched. - parameter apiResponseQueue: The queue on which api response is dispatched.
- returns: Promise<String> - returns: Promise<String>
*/ */
open class func loginUser( username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<String> { open class func loginUser( username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<String> {
let deferred = Promise<String>.pending() let deferred = Promise<String>.pending()
loginUserWithRequestBuilder(username: username, password: password).execute(apiResponseQueue) { result -> Void in loginUserWithRequestBuilder(username: username, password: password).execute(apiResponseQueue) { result -> Void in
switch result { switch result {
@ -244,12 +274,18 @@ open class UserAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"username": username.encodeToJSON(), "username": username.encodeToJSON(),
"password": password.encodeToJSON() "password": password.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -283,9 +319,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -296,7 +338,7 @@ open class UserAPI {
- parameter apiResponseQueue: The queue on which api response is dispatched. - parameter apiResponseQueue: The queue on which api response is dispatched.
- returns: Promise<Void> - returns: Promise<Void>
*/ */
open class func updateUser( username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<Void> { open class func updateUser( username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Promise<Void> {
let deferred = Promise<Void>.pending() let deferred = Promise<Void>.pending()
updateUserWithRequestBuilder(username: username, body: body).execute(apiResponseQueue) { result -> Void in updateUserWithRequestBuilder(username: username, body: body).execute(apiResponseQueue) { result -> Void in
switch result { switch result {
@ -327,9 +369,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -24,12 +24,6 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
open class URLSessionRequestBuilder<T>: RequestBuilder<T> { open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
private var observation: NSKeyValueObservation?
deinit {
observation?.invalidate()
}
// swiftlint:disable:next weak_delegate // swiftlint:disable:next weak_delegate
fileprivate let sessionDelegate = SessionDelegate() fileprivate let sessionDelegate = SessionDelegate()
@ -47,8 +41,8 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
@available(*, deprecated, message: "Please override execute() method to intercept and handle errors like authorization or retry the request. Check the Wiki for more info. https://github.com/OpenAPITools/openapi-generator/wiki/FAQ#how-do-i-implement-bearer-token-authentication-with-urlsession-on-the-swift-api-client") @available(*, deprecated, message: "Please override execute() method to intercept and handle errors like authorization or retry the request. Check the Wiki for more info. https://github.com/OpenAPITools/openapi-generator/wiki/FAQ#how-do-i-implement-bearer-token-authentication-with-urlsession-on-the-swift-api-client")
public var taskCompletionShouldRetry: ((Data?, URLResponse?, Error?, @escaping (Bool) -> Void) -> Void)? public var taskCompletionShouldRetry: ((Data?, URLResponse?, Error?, @escaping (Bool) -> Void) -> Void)?
required public init(method: String, URLString: String, parameters: [String: Any]?, isBody: Bool, headers: [String: String] = [:]) { required public init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) {
super.init(method: method, URLString: URLString, parameters: parameters, isBody: isBody, headers: headers) super.init(method: method, URLString: URLString, parameters: parameters, headers: headers)
} }
/** /**
@ -102,32 +96,37 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
} }
override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) { override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
let urlSessionId: String = UUID().uuidString let urlSessionId = UUID().uuidString
// Create a new manager for each request to customize its request header // Create a new manager for each request to customize its request header
let urlSession = createURLSession() let urlSession = createURLSession()
urlSessionStore[urlSessionId] = urlSession urlSessionStore[urlSessionId] = urlSession
let parameters: [String: Any] = self.parameters ?? [:]
let fileKeys = parameters.filter { $1 is URL }
.map { $0.0 }
let encoding: ParameterEncoding
if fileKeys.count > 0 {
encoding = FileUploadEncoding(contentTypeForFormPart: contentTypeForFormPart(fileURL:))
} else if isBody {
encoding = JSONDataEncoding()
} else {
encoding = URLEncoding()
}
guard let xMethod = HTTPMethod(rawValue: method) else { guard let xMethod = HTTPMethod(rawValue: method) else {
fatalError("Unsuported Http method - \(method)") fatalError("Unsuported Http method - \(method)")
} }
let encoding: ParameterEncoding
switch xMethod {
case .get, .head:
encoding = URLEncoding()
case .options, .post, .put, .patch, .delete, .trace, .connect:
let contentType = headers["Content-Type"] ?? "application/json"
if contentType == "application/json" {
encoding = JSONDataEncoding()
} else if contentType == "multipart/form-data" {
encoding = FormDataEncoding(contentTypeForFormPart: contentTypeForFormPart(fileURL:))
} else if contentType == "application/x-www-form-urlencoded" {
encoding = FormURLEncoding()
} else {
fatalError("Unsuported Media Type - \(contentType)")
}
}
let cleanupRequest = { let cleanupRequest = {
urlSessionStore[urlSessionId] = nil urlSessionStore[urlSessionId] = nil
self.observation?.invalidate()
} }
do { do {
@ -171,7 +170,6 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
completion(.failure(ErrorResponse.error(415, nil, nil, error))) completion(.failure(ErrorResponse.error(415, nil, nil, error)))
} }
} }
} }
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) { fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
@ -426,7 +424,7 @@ private class URLEncoding: ParameterEncoding {
} }
} }
private class FileUploadEncoding: ParameterEncoding { private class FormDataEncoding: ParameterEncoding {
let contentTypeForFormPart: (_ fileURL: URL) -> String? let contentTypeForFormPart: (_ fileURL: URL) -> String?
@ -570,7 +568,25 @@ private class FileUploadEncoding: ParameterEncoding {
} }
fileprivate extension Data { private class FormURLEncoding: ParameterEncoding {
func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest {
var urlRequest = urlRequest
var requestBodyComponents = URLComponents()
requestBodyComponents.queryItems = APIHelper.mapValuesToQueryItems(parameters ?? [:])
if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil {
urlRequest.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
}
urlRequest.httpBody = requestBodyComponents.query?.data(using: .utf8)
return urlRequest
}
}
private extension Data {
/// Append string to Data /// Append string to Data
/// ///
/// Rather than littering my code with calls to `dataUsingEncoding` to convert strings to Data, and then add that data to the Data, this wraps it in a nice convenient little extension to Data. This converts using UTF-8. /// Rather than littering my code with calls to `dataUsingEncoding` to convert strings to Data, and then add that data to the Data, this wraps it in a nice convenient little extension to Data. This converts using UTF-8.
@ -584,7 +600,7 @@ fileprivate extension Data {
} }
} }
fileprivate extension Optional where Wrapped == Data { private extension Optional where Wrapped == Data {
var orEmpty: Data { var orEmpty: Data {
self ?? Data() self ?? Data()
} }

View File

@ -3,8 +3,8 @@
## Properties ## Properties
Name | Type | Description | Notes Name | Type | Description | Notes
------------ | ------------- | ------------- | ------------- ------------ | ------------- | ------------- | -------------
**mapString** | **[String:String]** | | [optional] **mapString** | **[String: String]** | | [optional]
**mapMapString** | [String:[String:String]] | | [optional] **mapMapString** | [String: [String: String]] | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -534,7 +534,7 @@ No authorization required
# **testInlineAdditionalProperties** # **testInlineAdditionalProperties**
```swift ```swift
open class func testInlineAdditionalProperties( param: [String:String]) -> Promise<Void> open class func testInlineAdditionalProperties( param: [String: String]) -> Promise<Void>
``` ```
test inline additionalProperties test inline additionalProperties
@ -544,7 +544,7 @@ test inline additionalProperties
// The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new // The following code samples are still beta. For any issue, please report via http://github.com/OpenAPITools/openapi-generator/issues/new
import PetstoreClient import PetstoreClient
let param = "TODO" // [String:String] | request body let param = "TODO" // [String: String] | request body
// test inline additionalProperties // test inline additionalProperties
FakeAPI.testInlineAdditionalProperties(param: param).then { FakeAPI.testInlineAdditionalProperties(param: param).then {
@ -560,7 +560,7 @@ FakeAPI.testInlineAdditionalProperties(param: param).then {
Name | Type | Description | Notes Name | Type | Description | Notes
------------- | ------------- | ------------- | ------------- ------------- | ------------- | ------------- | -------------
**param** | [**[String:String]**](String.md) | request body | **param** | [**[String: String]**](String.md) | request body |
### Return type ### Return type

View File

@ -3,9 +3,9 @@
## Properties ## Properties
Name | Type | Description | Notes Name | Type | Description | Notes
------------ | ------------- | ------------- | ------------- ------------ | ------------- | ------------- | -------------
**mapMapOfString** | [String:[String:String]] | | [optional] **mapMapOfString** | [String: [String: String]] | | [optional]
**mapOfEnumString** | **[String:String]** | | [optional] **mapOfEnumString** | **[String: String]** | | [optional]
**directMap** | **[String:Bool]** | | [optional] **directMap** | **[String: Bool]** | | [optional]
**indirectMap** | [**StringBooleanMap**](StringBooleanMap.md) | | [optional] **indirectMap** | [**StringBooleanMap**](StringBooleanMap.md) | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -5,7 +5,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | ------------- ------------ | ------------- | ------------- | -------------
**uuid** | **UUID** | | [optional] **uuid** | **UUID** | | [optional]
**dateTime** | **Date** | | [optional] **dateTime** | **Date** | | [optional]
**map** | [String:Animal] | | [optional] **map** | [String: Animal] | | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -59,7 +59,7 @@ No authorization required
# **getInventory** # **getInventory**
```swift ```swift
open class func getInventory() -> Promise<[String:Int]> open class func getInventory() -> Promise<[String: Int]>
``` ```
Returns pet inventories by status Returns pet inventories by status
@ -87,7 +87,7 @@ This endpoint does not need any parameter.
### Return type ### Return type
**[String:Int]** **[String: Int]**
### Authorization ### Authorization

View File

@ -18,7 +18,6 @@ open class RequestBuilder<T> {
var credential: URLCredential? var credential: URLCredential?
var headers: [String: String] var headers: [String: String]
public let parameters: [String: Any]? public let parameters: [String: Any]?
public let isBody: Bool
public let method: String public let method: String
public let URLString: String public let URLString: String
@ -27,11 +26,10 @@ open class RequestBuilder<T> {
/// If you need to get the request's progress in older OS versions, please use Alamofire http client. /// If you need to get the request's progress in older OS versions, please use Alamofire http client.
public var onProgressReady: ((Progress) -> Void)? public var onProgressReady: ((Progress) -> Void)?
required public init(method: String, URLString: String, parameters: [String: Any]?, isBody: Bool, headers: [String: String] = [:]) { required public init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) {
self.method = method self.method = method
self.URLString = URLString self.URLString = URLString
self.parameters = parameters self.parameters = parameters
self.isBody = isBody
self.headers = headers self.headers = headers
addHeaders(PetstoreClientAPI.customHeaders) addHeaders(PetstoreClientAPI.customHeaders)

View File

@ -40,9 +40,15 @@ open class AnotherFakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -38,9 +38,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Bool>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Bool>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -73,9 +79,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<OuterComposite>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<OuterComposite>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -108,9 +120,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Double>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Double>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -143,9 +161,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -178,9 +202,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -214,12 +244,18 @@ open class FakeAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"query": query.encodeToJSON() "query": query.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -254,9 +290,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -330,7 +372,7 @@ open class FakeAPI {
"date": date?.encodeToJSON(), "date": date?.encodeToJSON(),
"dateTime": dateTime?.encodeToJSON(), "dateTime": dateTime?.encodeToJSON(),
"password": password?.encodeToJSON(), "password": password?.encodeToJSON(),
"callback": callback?.encodeToJSON() "callback": callback?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -338,9 +380,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -454,7 +502,7 @@ open class FakeAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"enum_form_string_array": enumFormStringArray?.encodeToJSON(), "enum_form_string_array": enumFormStringArray?.encodeToJSON(),
"enum_form_string": enumFormString?.encodeToJSON() "enum_form_string": enumFormString?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -465,17 +513,20 @@ open class FakeAPI {
"enum_query_string_array": enumQueryStringArray?.encodeToJSON(), "enum_query_string_array": enumQueryStringArray?.encodeToJSON(),
"enum_query_string": enumQueryString?.encodeToJSON(), "enum_query_string": enumQueryString?.encodeToJSON(),
"enum_query_integer": enumQueryInteger?.encodeToJSON(), "enum_query_integer": enumQueryInteger?.encodeToJSON(),
"enum_query_double": enumQueryDouble?.encodeToJSON() "enum_query_double": enumQueryDouble?.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [ let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
"enum_header_string_array": enumHeaderStringArray?.encodeToJSON(), "enum_header_string_array": enumHeaderStringArray?.encodeToJSON(),
"enum_header_string": enumHeaderString?.encodeToJSON() "enum_header_string": enumHeaderString?.encodeToJSON(),
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -523,17 +574,19 @@ open class FakeAPI {
"required_string_group": requiredStringGroup.encodeToJSON(), "required_string_group": requiredStringGroup.encodeToJSON(),
"required_int64_group": requiredInt64Group.encodeToJSON(), "required_int64_group": requiredInt64Group.encodeToJSON(),
"string_group": stringGroup?.encodeToJSON(), "string_group": stringGroup?.encodeToJSON(),
"int64_group": int64Group?.encodeToJSON() "int64_group": int64Group?.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [ let nillableHeaders: [String: Any?] = [
"required_boolean_group": requiredBooleanGroup.encodeToJSON(), "required_boolean_group": requiredBooleanGroup.encodeToJSON(),
"boolean_group": booleanGroup?.encodeToJSON() "boolean_group": booleanGroup?.encodeToJSON(),
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -567,9 +620,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -603,7 +662,7 @@ open class FakeAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"param": param.encodeToJSON(), "param": param.encodeToJSON(),
"param2": param2.encodeToJSON() "param2": param2.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -611,9 +670,15 @@ open class FakeAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -43,9 +43,15 @@ open class FakeClassnameTags123API {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Client>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PATCH", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -42,9 +42,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -85,14 +91,16 @@ open class PetAPI {
let parameters: [String: Any]? = nil let parameters: [String: Any]? = nil
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [ let nillableHeaders: [String: Any?] = [
"api_key": apiKey?.encodeToJSON() "api_key": apiKey?.encodeToJSON(),
] ]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders) let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false, headers: headerParameters) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -139,12 +147,18 @@ open class PetAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"status": status.encodeToJSON() "status": status.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -184,12 +198,18 @@ open class PetAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"tags": tags.encodeToJSON() "tags": tags.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[Pet]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -230,9 +250,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Pet>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Pet>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -269,9 +295,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -313,7 +345,7 @@ open class PetAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"name": name?.encodeToJSON(), "name": name?.encodeToJSON(),
"status": status?.encodeToJSON() "status": status?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -321,9 +353,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "application/x-www-form-urlencoded",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -365,7 +403,7 @@ open class PetAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata?.encodeToJSON(), "additionalMetadata": additionalMetadata?.encodeToJSON(),
"file": file?.encodeToJSON() "file": file?.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -373,9 +411,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "multipart/form-data",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -417,7 +461,7 @@ open class PetAPI {
let URLString = PetstoreClientAPI.basePath + path let URLString = PetstoreClientAPI.basePath + path
let formParams: [String: Any?] = [ let formParams: [String: Any?] = [
"additionalMetadata": additionalMetadata?.encodeToJSON(), "additionalMetadata": additionalMetadata?.encodeToJSON(),
"requiredFile": requiredFile.encodeToJSON() "requiredFile": requiredFile.encodeToJSON(),
] ]
let nonNullParameters = APIHelper.rejectNil(formParams) let nonNullParameters = APIHelper.rejectNil(formParams)
@ -425,9 +469,15 @@ open class PetAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
"Content-Type": "multipart/form-data",
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<ApiResponse>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -43,9 +43,15 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -72,7 +78,7 @@ open class StoreAPI {
- API Key: - API Key:
- type: apiKey api_key - type: apiKey api_key
- name: api_key - name: api_key
- returns: RequestBuilder<[String:Int]> - returns: RequestBuilder<[String: Int]>
*/ */
open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> { open class func getInventoryWithRequestBuilder() -> RequestBuilder<[String: Int]> {
let path = "/store/inventory" let path = "/store/inventory"
@ -81,9 +87,15 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<[String: Int]>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -121,9 +133,15 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -157,9 +175,15 @@ open class StoreAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<Order>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -40,9 +40,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -76,9 +82,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -112,9 +124,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "POST", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -152,9 +170,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "DELETE", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -191,9 +215,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<User>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<User>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -231,12 +261,18 @@ open class UserAPI {
var url = URLComponents(string: URLString) var url = URLComponents(string: URLString)
url?.queryItems = APIHelper.mapValuesToQueryItems([ url?.queryItems = APIHelper.mapValuesToQueryItems([
"username": username.encodeToJSON(), "username": username.encodeToJSON(),
"password": password.encodeToJSON() "password": password.encodeToJSON(),
]) ])
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder() let requestBuilder: RequestBuilder<String>.Type = PetstoreClientAPI.requestBuilderFactory.getBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -268,9 +304,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, isBody: false) return requestBuilder.init(method: "GET", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
/** /**
@ -310,9 +352,15 @@ open class UserAPI {
let url = URLComponents(string: URLString) let url = URLComponents(string: URLString)
let nillableHeaders: [String: Any?] = [
:
]
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders)
let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder() let requestBuilder: RequestBuilder<Void>.Type = PetstoreClientAPI.requestBuilderFactory.getNonDecodableBuilder()
return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, isBody: true) return requestBuilder.init(method: "PUT", URLString: (url?.string ?? URLString), parameters: parameters, headers: headerParameters)
} }
} }

View File

@ -24,12 +24,6 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
open class URLSessionRequestBuilder<T>: RequestBuilder<T> { open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
private var observation: NSKeyValueObservation?
deinit {
observation?.invalidate()
}
// swiftlint:disable:next weak_delegate // swiftlint:disable:next weak_delegate
fileprivate let sessionDelegate = SessionDelegate() fileprivate let sessionDelegate = SessionDelegate()
@ -47,8 +41,8 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
@available(*, deprecated, message: "Please override execute() method to intercept and handle errors like authorization or retry the request. Check the Wiki for more info. https://github.com/OpenAPITools/openapi-generator/wiki/FAQ#how-do-i-implement-bearer-token-authentication-with-urlsession-on-the-swift-api-client") @available(*, deprecated, message: "Please override execute() method to intercept and handle errors like authorization or retry the request. Check the Wiki for more info. https://github.com/OpenAPITools/openapi-generator/wiki/FAQ#how-do-i-implement-bearer-token-authentication-with-urlsession-on-the-swift-api-client")
public var taskCompletionShouldRetry: ((Data?, URLResponse?, Error?, @escaping (Bool) -> Void) -> Void)? public var taskCompletionShouldRetry: ((Data?, URLResponse?, Error?, @escaping (Bool) -> Void) -> Void)?
required public init(method: String, URLString: String, parameters: [String: Any]?, isBody: Bool, headers: [String: String] = [:]) { required public init(method: String, URLString: String, parameters: [String: Any]?, headers: [String: String] = [:]) {
super.init(method: method, URLString: URLString, parameters: parameters, isBody: isBody, headers: headers) super.init(method: method, URLString: URLString, parameters: parameters, headers: headers)
} }
/** /**
@ -102,32 +96,37 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
} }
override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) { override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
let urlSessionId: String = UUID().uuidString let urlSessionId = UUID().uuidString
// Create a new manager for each request to customize its request header // Create a new manager for each request to customize its request header
let urlSession = createURLSession() let urlSession = createURLSession()
urlSessionStore[urlSessionId] = urlSession urlSessionStore[urlSessionId] = urlSession
let parameters: [String: Any] = self.parameters ?? [:]
let fileKeys = parameters.filter { $1 is URL }
.map { $0.0 }
let encoding: ParameterEncoding
if fileKeys.count > 0 {
encoding = FileUploadEncoding(contentTypeForFormPart: contentTypeForFormPart(fileURL:))
} else if isBody {
encoding = JSONDataEncoding()
} else {
encoding = URLEncoding()
}
guard let xMethod = HTTPMethod(rawValue: method) else { guard let xMethod = HTTPMethod(rawValue: method) else {
fatalError("Unsuported Http method - \(method)") fatalError("Unsuported Http method - \(method)")
} }
let encoding: ParameterEncoding
switch xMethod {
case .get, .head:
encoding = URLEncoding()
case .options, .post, .put, .patch, .delete, .trace, .connect:
let contentType = headers["Content-Type"] ?? "application/json"
if contentType == "application/json" {
encoding = JSONDataEncoding()
} else if contentType == "multipart/form-data" {
encoding = FormDataEncoding(contentTypeForFormPart: contentTypeForFormPart(fileURL:))
} else if contentType == "application/x-www-form-urlencoded" {
encoding = FormURLEncoding()
} else {
fatalError("Unsuported Media Type - \(contentType)")
}
}
let cleanupRequest = { let cleanupRequest = {
urlSessionStore[urlSessionId] = nil urlSessionStore[urlSessionId] = nil
self.observation?.invalidate()
} }
do { do {
@ -171,7 +170,6 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
completion(.failure(ErrorResponse.error(415, nil, nil, error))) completion(.failure(ErrorResponse.error(415, nil, nil, error)))
} }
} }
} }
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) { fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
@ -426,7 +424,7 @@ private class URLEncoding: ParameterEncoding {
} }
} }
private class FileUploadEncoding: ParameterEncoding { private class FormDataEncoding: ParameterEncoding {
let contentTypeForFormPart: (_ fileURL: URL) -> String? let contentTypeForFormPart: (_ fileURL: URL) -> String?
@ -570,7 +568,25 @@ private class FileUploadEncoding: ParameterEncoding {
} }
fileprivate extension Data { private class FormURLEncoding: ParameterEncoding {
func encode(_ urlRequest: URLRequest, with parameters: [String: Any]?) throws -> URLRequest {
var urlRequest = urlRequest
var requestBodyComponents = URLComponents()
requestBodyComponents.queryItems = APIHelper.mapValuesToQueryItems(parameters ?? [:])
if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil {
urlRequest.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
}
urlRequest.httpBody = requestBodyComponents.query?.data(using: .utf8)
return urlRequest
}
}
private extension Data {
/// Append string to Data /// Append string to Data
/// ///
/// Rather than littering my code with calls to `dataUsingEncoding` to convert strings to Data, and then add that data to the Data, this wraps it in a nice convenient little extension to Data. This converts using UTF-8. /// Rather than littering my code with calls to `dataUsingEncoding` to convert strings to Data, and then add that data to the Data, this wraps it in a nice convenient little extension to Data. This converts using UTF-8.
@ -584,7 +600,7 @@ fileprivate extension Data {
} }
} }
fileprivate extension Optional where Wrapped == Data { private extension Optional where Wrapped == Data {
var orEmpty: Data { var orEmpty: Data {
self ?? Data() self ?? Data()
} }

Some files were not shown because too many files have changed in this diff Show More