add api request parameters customization

This commit is contained in:
Ivan Smolin 2018-04-11 15:55:38 +03:00
parent 47b14126b1
commit a9afe6b562
2 changed files with 23 additions and 9 deletions

View File

@ -4,13 +4,27 @@ import RxSwift
{% set serviceName = concat(networkServiceName, "NetworkService") -%}
class {{ serviceName }}: NetworkService {
static let apiBaseUrl = "{{ apiUrl }}"
convenience init() {
self.init(configuration: NetworkServiceConfiguration(baseUrl: "{{ apiUrl }}"))
self.init(configuration: NetworkServiceConfiguration(baseUrl: {{ serviceName }}.apiBaseUrl))
}
func apiRequest<T: ImmutableMappable>(with parameters: ApiRequestParameters) -> Single<T> {
return rxRequest(with: parameters).map { $0.model }.asSingle()
}
func apiRequestParameters(relativeUrl: String,
method: HTTPMethod = .get,
parameters: Parameters? = nil,
requestEncoding: ParameterEncoding? = nil,
requestHeaders: HTTPHeaders? = nil) -> ApiRequestParameters {
return configuration.apiRequestParameters(relativeUrl: relativeUrl,
method: method,
parameters: parameters,
requestEncoding: requestEncoding,
requestHeaders: requestHeaders)
}
}
{{ "\n" }}

View File

@ -12,19 +12,19 @@
/// {{ method.description }}
{{ isStatic ? "static " : "" }}func {{ funcName }}({%- if hasBody -%}{{ bodyParamName }}: {{ bodyTypeName }},{{ "\n " }}{%- endif -%}
encoding: ParameterEncoding? = nil,
requestEncoding: ParameterEncoding? = nil,
requestHeaders: HTTPHeaders? = nil) -> Single<{{ method.responseType.type.typeName }}> {
{% if isStatic -%}
return shared.{{ funcName }}({%- if hasBody -%}{{ bodyParamName }}: {{ bodyParamName }},{{ "\n " }}{%- endif -%}
encoding: encoding,
requestEncoding: requestEncoding,
requestHeaders: requestHeaders)
{%- else %}
let parameters = ApiRequestParameters(url: configuration.baseUrl + "{{ method.url }}",
method: .{{ methodType }},
parameters: {% if hasBody -%}{{ bodyParamName }}.toJSON(){%- else -%}nil{%- endif -%},
encoding: encoding ?? configuration.encoding,
headers: requestHeaders)
{%- else -%}
let parameters = apiRequestParameters(relativeUrl: "{{ method.url }}",
method: .{{ methodType }},
parameters: {% if hasBody -%}{{ bodyParamName }}.toJSON(){%- else -%}nil{%- endif -%},
requestEncoding: requestEncoding,
requestHeaders: requestHeaders)
return apiRequest(with: parameters)
{%- endif %}