{%- import '../../macroses/common.utils.twig' as utils -%} {%- if (method.bodyType is not null) -%} {%- set bodyParamName = utils.decapitalize(method.bodyType.type.typeName) -%} {%- set bodyTypeName = method.bodyType.type.typeName -%} {%- set hasBody = true -%} {%- endif -%} {%- set methodType = default(method.type, "POST") | lower -%} {%- set funcName = utils.decapitalize(method.name) -%} /// {{ method.description }} public {{ isStatic ? "static " : "" }}func {{ funcName }}({%- if hasBody -%}{{ bodyParamName }}: {{ bodyTypeName }},{{ "\n " }}{%- endif -%} requestEncoding: ParameterEncoding? = nil, requestHeaders: HTTPHeaders? = nil, additionalValidStatusCodes: Set = []) -> Single<{{ utils.formatValueType(method.apiResponseType) }}> { {% if isStatic -%} return shared.{{ funcName }}({%- if hasBody -%}{{ bodyParamName }}: {{ bodyParamName }},{{ "\n " }}{%- endif -%} requestEncoding: requestEncoding, requestHeaders: requestHeaders, additionalValidStatusCodes: additionalValidStatusCodes) {%- else -%} let parameters = deferredApiRequestParameters(relativeUrl: "{{ method.url }}", method: .{{ methodType }}, parameters: {% if hasBody -%}{{ bodyParamName }}.toJSON(){%- else -%}nil{%- endif -%}, requestEncoding: requestEncoding, requestHeaders: requestHeaders) return apiRequest(with: parameters, additionalValidStatusCodes: additionalValidStatusCodes, decoder: JSONDecoder()) {%- endif %} }