api-generator-templates/Swift/blocks/method/method-func.twig

35 lines
1.8 KiB
Twig

{%- 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 }}
{{ isStatic ? "static " : "" }}func {{ funcName }}({%- if hasBody -%}{{ bodyParamName }}: {{ bodyTypeName }},{{ "\n " }}{%- endif -%}
requestEncoding: ParameterEncoding? = nil,
requestHeaders: HTTPHeaders? = nil,
additionalValidStatusCodes: Set<Int> = []) -> Single<{{ method.responseType.type.typeName }}> {
{% 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 %}
}