All Downloads are FREE. Search and download functionalities are using the official Maven repository.

v2.swift3.api.mustache Maven / Gradle / Ivy

The newest version!
{{#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}}: APIBase { {{#operation}}{{#allParams}}{{#is this 'enum'}}
    /**
     * enum for parameter {{paramName}}
     */
    public enum {{enumName}}_{{operationId}}: {{#isNot this 'container'}}{{{dataType}}}{{/isNot}}{{#is this 'container'}}String{{/is}} { {{#allowableValues}}{{#enumVars}}
        case {{name}} = {{#is ../../this 'container'}}"{{/is}}{{#is ../../this 'string'}}"{{/is}}{{{value}}}{{#is ../../this 'string'}}"{{/is}}{{#is ../../this 'container'}}"{{/is}}{{/enumVars}}{{/allowableValues}}
    }

    {{/is~}}{{/allParams}}
    /**
    {{#summary}}{{{summary}}}{{/summary~}}
     {{#allParams}}
     - parameter {{paramName}}: ({{#is this 'form-param'}}form{{/is}}{{#is this 'query-param'}}query{{/is}}{{#is this 'path-param'}}path{{/is}}{{#is this 'header-param'}}header{{/is}}{{#is this 'body-param'}}body{{/is}}) {{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}}: {{#is this 'enum'}}{{#is this 'container'}}{{{dataType}}}{{/is}}{{#isNot this 'container'}}{{{datatypeWithEnum}}}_{{operationId}}{{/isNot}}{{/is}}{{#isNot this 'enum'}}{{{dataType}}}{{/isNot}}{{^required}}? = nil{{/required}}{{#has this 'more'}}, {{/has}}{{/allParams}}{{#has this 'params'}}, {{/has}}completion: @escaping ((_ {{#returnType}}data: {{{returnType}}}?, _ {{/returnType}}error: ErrorResponse?) -> Void)) {
        {{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{#has this 'more'}}, {{/has}}{{/allParams}}).execute { (response, error) -> Void in
            completion({{#returnType}}response?.body, {{/returnType}}error)
        }
    }
{{#usePromiseKit}}
    /**
     {{#summary}}
     {{{summary}}}
     {{/summary~}}
     {{#allParams}}
     - parameter {{paramName}}: ({{#is this 'form-param'}}form{{/is}}{{#is this 'query-param'}}query{{/is}}{{#is this 'path-param'}}path{{/is}}{{#is this 'header-param'}}header{{/is}}{{#is this 'body-param'}}body{{/is}}) {{description}} {{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}
     {{/allParams~}}
     - returns: Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}>
     */
    open class func {{operationId}}({{#allParams}} {{paramName}}: {{#is this 'enum'}}{{#is this 'container'}}{{{dataType}}}{{/is}}{{#isNot this 'container'}}{{{datatypeWithEnum}}}_{{operationId}}{{/isNot}}{{/is}}{{#isNot this 'enum'}}{{{dataType}}}{{/isNot}}{{^required}}? = nil{{/required}}{{#has this 'more'}}, {{/has}}{{/allParams}}) -> Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> {
        let deferred = Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}>.pending()
        {{operationId}}({{#allParams}}{{paramName}}: {{paramName}}{{#has this 'more'}}, {{/has}}{{/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}}: ({{#is this 'form-param'}}form{{/is}}{{#is this 'query-param'}}query{{/is}}{{#is this 'path-param'}}path{{/is}}{{#is this 'header-param'}}header{{/is}}{{#is this 'body-param'}}body{{/is}}) {{description}} {{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}
     {{/allParams~}}
     - returns: Observable<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}>
     */
    open class func {{operationId}}({{#allParams}}{{paramName}}: {{#is this 'enum'}}{{#is this 'container'}}{{{dataType}}}{{/is}}{{#isNot this 'container'}}{{{datatypeWithEnum}}}_{{operationId}}{{/isNot}}{{/is}}{{#isNot this 'enum'}}{{{dataType}}}{{/isNot}}{{^required}}? = nil{{/required}}{{#has this 'more'}}, {{/has}}{{/allParams}}) -> Observable<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> {
        return Observable.create { observer -> Disposable in
            {{operationId}}({{#allParams}}{{paramName}}: {{paramName}}{{#has this 'more'}}, {{/has}}{{/allParams}}) { {{#returnType}}data, {{/returnType}}error in
                if let error = error {
                    observer.on(.error(error as Error))
                } else {
                    observer.on(.next({{#returnType}}data!{{/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}}
     - {{#is this 'basic'}}BASIC{{/is}}{{#is this 'oauth'}}OAuth{{/is}}{{#is this 'api-key'}}API Key{{/is}}:
       - type: {{type}}{{#keyParamName}} {{keyParamName}} {{#is ../../this 'key-in-query'}}(QUERY){{/is}}{{#is ../../this 'key-in-header'}}(HEADER){{/is}}{{/keyParamName}}
       - name: {{name}}{{/authMethods}}{{#responseHeaders}}
     - responseHeaders: {{responseHeaders}}{{/responseHeaders}}{{#examples}}
     - examples: {{{examples}}}{{/examples}}{{#externalDocs}}
     - externalDocs: {{externalDocs}}{{/externalDocs}}{{#allParams}}
     - parameter {{paramName}}: ({{#is this 'form-param'}}form{{/is}}{{#is this 'query-param'}}query{{/is}}{{#is this 'path-param'}}path{{/is}}{{#is this 'header-param'}}header{{/is}}{{#is this 'body-param'}}body{{/is}}) {{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}}: {{#is this 'enum'}}{{#is this 'container'}}{{{dataType}}}{{/is}}{{#isNot this 'container'}}{{{datatypeWithEnum}}}_{{operationId}}{{/isNot}}{{/is}}{{#isNot this 'enum'}}{{{dataType}}}{{/isNot}}{{^required}}? = nil{{/required}}{{#has this 'more'}}, {{/has}}{{/allParams}}) -> RequestBuilder<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> {
        {{^pathParams}}let{{/pathParams}}{{#pathParams}}{{^secondaryParam}}var{{/secondaryParam}}{{/pathParams}} path = "{{{path}}}"{{#pathParams}}
        let {{paramName}}PreEscape = "\({{paramName}}{{#is this 'enum'}}{{#is this 'container'}}{{{dataType}}}{{/is}}{{#isNot this 'container'}}.rawValue{{/isNot}}{{/is}})"
        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 = {{paramName}}{{^required}}?{{/required}}.encodeToJSON(){{/bodyParam~}}{{^bodyParam}}{{#has this 'formParams'}}
        let formParams: [String:Any?] = [
                {{#formParams}}
            {{> _param}}{{#has this 'more'}},{{/has}}
                {{/formParams}}
        ]

        let nonNullParameters = APIHelper.rejectNil(formParams)
        let parameters = APIHelper.convertBoolToString(nonNullParameters)
            {{/has}}{{#hasNot this 'formParams'}}
        let parameters: [String:Any]? = nil{{/hasNot}}
        {{/bodyParam}}{{#has this 'queryParams'}}
        var url = URLComponents(string: URLString)
        url?.queryItems = APIHelper.mapValuesToQueryItems(values:[
            {{#queryParams}}
            {{> _param}}{{#has this 'more'}},{{/has}}
            {{/queryParams}}
        ]){{/has}}{{#hasNot this 'queryParams'}}
        let url = URLComponents(string: URLString){{/hasNot}}{{#headerParams}}{{^secondaryParam}}
        let nillableHeaders: [String: Any?] = [{{/secondaryParam}}
            {{> _param}}{{#has this 'more'}},{{/has~}}
        {{#hasNot this 'more'}}
        ]
        let headerParameters = APIHelper.rejectNilHeaders(nillableHeaders){{/hasNot~}}
        {{/headerParams}}

        let requestBuilder: RequestBuilder<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}>.Type = {{projectName}}API.requestBuilderFactory.getBuilder()

        return requestBuilder.init(method: "{{httpMethod}}", URLString: (url?.string ?? URLString), parameters: parameters, isBody: {{has this 'bodyParam'}}{{#headerParams}}{{^secondaryParam}}, headers: headerParameters{{/secondaryParam}}{{/headerParams}})
    }

{{/operation~}}
}
{{#swiftUseApiNamespace}}
}
{{/swiftUseApiNamespace~}}
{{/operations~}}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy