forked from loafle/openapi-generator-original
* Escape URL parameters for Swift4 and update its Petstore sample * Update the code style * Update code style * Update code style * Remove break statements in switch for AlamofireImplementations
156 lines
9.3 KiB
Plaintext
156 lines
9.3 KiB
Plaintext
{{#operations}}//
|
|
// {{classname}}.swift
|
|
//
|
|
// Generated by swagger-codegen
|
|
// https://github.com/swagger-api/swagger-codegen
|
|
//
|
|
|
|
import Foundation
|
|
import Alamofire{{#usePromiseKit}}
|
|
import PromiseKit{{/usePromiseKit}}{{#useRxSwift}}
|
|
import RxSwift{{/useRxSwift}}
|
|
|
|
{{#swiftUseApiNamespace}}
|
|
extension {{projectName}}API {
|
|
{{/swiftUseApiNamespace}}
|
|
|
|
{{#description}}
|
|
/** {{description}} */{{/description}}
|
|
open class {{classname}} {
|
|
{{#operation}}
|
|
{{#allParams}}
|
|
{{#isEnum}}
|
|
/**
|
|
* enum for parameter {{paramName}}
|
|
*/
|
|
public enum {{enumName}}_{{operationId}}: {{^isContainer}}{{{dataType}}}{{/isContainer}}{{#isContainer}}String{{/isContainer}} { {{#allowableValues}}{{#enumVars}}
|
|
case {{name}} = {{#isContainer}}"{{/isContainer}}{{#isString}}"{{/isString}}{{{value}}}{{#isString}}"{{/isString}}{{#isContainer}}"{{/isContainer}}{{/enumVars}}{{/allowableValues}}
|
|
}
|
|
|
|
{{/isEnum}}
|
|
{{/allParams}}
|
|
/**
|
|
{{#summary}}
|
|
{{{summary}}}
|
|
{{/summary}}{{#allParams}}
|
|
- parameter {{paramName}}: ({{#isFormParam}}form{{/isFormParam}}{{#isQueryParam}}query{{/isQueryParam}}{{#isPathParam}}path{{/isPathParam}}{{#isHeaderParam}}header{{/isHeaderParam}}{{#isBodyParam}}body{{/isBodyParam}}) {{description}} {{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}{{/allParams}}
|
|
- parameter completion: completion handler to receive the data and the error objects
|
|
*/
|
|
open class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}{{#hasParams}}, {{/hasParams}}completion: @escaping ((_ {{#returnType}}data: {{{returnType}}}?,_ {{/returnType}}error: Error?) -> Void)) {
|
|
{{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}).execute { (response, error) -> Void in
|
|
completion({{#returnType}}response?.body, {{/returnType}}error);
|
|
}
|
|
}
|
|
|
|
{{#usePromiseKit}}
|
|
/**
|
|
{{#summary}}
|
|
{{{summary}}}
|
|
{{/summary}}{{#allParams}}
|
|
- parameter {{paramName}}: ({{#isFormParam}}form{{/isFormParam}}{{#isQueryParam}}query{{/isQueryParam}}{{#isPathParam}}path{{/isPathParam}}{{#isHeaderParam}}header{{/isHeaderParam}}{{#isBodyParam}}body{{/isBodyParam}}) {{description}} {{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}{{/allParams}}
|
|
- returns: Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}>
|
|
*/
|
|
open class func {{operationId}}({{#allParams}} {{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> {
|
|
let deferred = Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}>.pending()
|
|
{{operationId}}({{#allParams}}{{paramName}}: {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) { {{#returnType}}data, {{/returnType}}error in
|
|
if let error = error {
|
|
deferred.reject(error)
|
|
} else {
|
|
deferred.fulfill({{#returnType}}data!{{/returnType}})
|
|
}
|
|
}
|
|
return deferred.promise
|
|
}
|
|
{{/usePromiseKit}}
|
|
{{#useRxSwift}}
|
|
/**
|
|
{{#summary}}
|
|
{{{summary}}}
|
|
{{/summary}}{{#allParams}}
|
|
- parameter {{paramName}}: ({{#isFormParam}}form{{/isFormParam}}{{#isQueryParam}}query{{/isQueryParam}}{{#isPathParam}}path{{/isPathParam}}{{#isHeaderParam}}header{{/isHeaderParam}}{{#isBodyParam}}body{{/isBodyParam}}) {{description}} {{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}{{/allParams}}
|
|
- returns: Observable<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}>
|
|
*/
|
|
open class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> Observable<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> {
|
|
return Observable.create { observer -> Disposable in
|
|
{{operationId}}({{#allParams}}{{paramName}}: {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) { {{#returnType}}data, {{/returnType}}error in
|
|
if let error = error {
|
|
observer.on(.error(error))
|
|
} else {
|
|
observer.on(.next({{#returnType}}data!{{/returnType}}{{^returnType}}(){{/returnType}}))
|
|
}
|
|
observer.on(.completed)
|
|
}
|
|
return Disposables.create()
|
|
}
|
|
}
|
|
{{/useRxSwift}}
|
|
|
|
/**
|
|
{{#summary}}
|
|
{{{summary}}}
|
|
{{/summary}}
|
|
- {{httpMethod}} {{{path}}}{{#notes}}
|
|
- {{{notes}}}{{/notes}}{{#subresourceOperation}}
|
|
- subresourceOperation: {{subresourceOperation}}{{/subresourceOperation}}{{#defaultResponse}}
|
|
- defaultResponse: {{defaultResponse}}{{/defaultResponse}}{{#authMethods}}
|
|
- {{#isBasic}}BASIC{{/isBasic}}{{#isOAuth}}OAuth{{/isOAuth}}{{#isApiKey}}API Key{{/isApiKey}}:
|
|
- type: {{type}}{{#keyParamName}} {{keyParamName}} {{#isKeyInQuery}}(QUERY){{/isKeyInQuery}}{{#isKeyInHeaer}}(HEADER){{/isKeyInHeaer}}{{/keyParamName}}
|
|
- name: {{name}}{{/authMethods}}{{#responseHeaders}}
|
|
- responseHeaders: {{responseHeaders}}{{/responseHeaders}}{{#examples}}
|
|
- examples: {{{examples}}}{{/examples}}{{#externalDocs}}
|
|
- externalDocs: {{externalDocs}}{{/externalDocs}}{{#hasParams}}
|
|
{{/hasParams}}{{#allParams}}
|
|
- parameter {{paramName}}: ({{#isFormParam}}form{{/isFormParam}}{{#isQueryParam}}query{{/isQueryParam}}{{#isPathParam}}path{{/isPathParam}}{{#isHeaderParam}}header{{/isHeaderParam}}{{#isBodyParam}}body{{/isBodyParam}}) {{description}} {{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}{{/allParams}}
|
|
|
|
- returns: RequestBuilder<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> {{description}}
|
|
*/
|
|
open class func {{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> RequestBuilder<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> {
|
|
{{^pathParams}}let{{/pathParams}}{{#pathParams}}{{^secondaryParam}}var{{/secondaryParam}}{{/pathParams}} path = "{{{path}}}"{{#pathParams}}
|
|
let {{paramName}}PreEscape = "\({{paramName}}{{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}.rawValue{{/isContainer}}{{/isEnum}})"
|
|
let {{paramName}}PostEscape = {{paramName}}PreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? ""
|
|
path = path.replacingOccurrences(of: "{{=<% %>=}}{<%baseName%>}<%={{ }}=%>", with: {{paramName}}PostEscape, options: .literal, range: nil){{/pathParams}}
|
|
let URLString = {{projectName}}API.basePath + path
|
|
{{#bodyParam}}
|
|
let parameters = JSONEncodingHelper.encodingParameters(forEncodableObject: {{paramName}})
|
|
{{/bodyParam}}
|
|
{{^bodyParam}}
|
|
{{#hasFormParams}}
|
|
let formParams: [String:Any?] = [
|
|
{{#formParams}}
|
|
{{> _param}}{{#hasMore}},{{/hasMore}}
|
|
{{/formParams}}
|
|
]
|
|
|
|
let nonNullParameters = APIHelper.rejectNil(formParams)
|
|
let parameters = APIHelper.convertBoolToString(nonNullParameters)
|
|
{{/hasFormParams}}
|
|
{{^hasFormParams}}
|
|
let parameters: [String:Any]? = nil
|
|
{{/hasFormParams}}
|
|
{{/bodyParam}}
|
|
|
|
let url = NSURLComponents(string: URLString)
|
|
{{#hasQueryParams}}
|
|
url?.queryItems = APIHelper.mapValuesToQueryItems(values:[
|
|
{{#queryParams}}
|
|
{{> _param}}{{#hasMore}}, {{/hasMore}}
|
|
{{/queryParams}}
|
|
])
|
|
{{/hasQueryParams}}{{#headerParams}}{{^secondaryParam}}
|
|
let nillableHeaders: [String: Any?] = [{{/secondaryParam}}
|
|
{{> _param}}{{#hasMore}},{{/hasMore}}{{^hasMore}}
|
|
]
|
|
let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders){{/hasMore}}{{/headerParams}}
|
|
|
|
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}}{{^secondaryParam}}, headers: headerParameters{{/secondaryParam}}{{/headerParams}})
|
|
}
|
|
|
|
{{/operation}}
|
|
}
|
|
{{#swiftUseApiNamespace}}
|
|
}
|
|
{{/swiftUseApiNamespace}}
|
|
{{/operations}}
|