asyncscala.api.mustache Maven / Gradle / Ivy
package {{package}}
{{#imports}}import {{import}}
{{/imports}}
import com.wordnik.swagger.client._
import scala.concurrent.Future
import collection.mutable
{{#operations}}
class {{classname}}(client: TransportClient, config: SwaggerConfig) extends ApiClient(client, config) {
  {{#operation}}
  def {{operationId}}({{#allParams}}{{^required}}{{paramName}}: Option[{{dataType}}] = {{#defaultValue}}Some({{defaultValue}}){{/defaultValue}}{{^defaultValue}}None{{/defaultValue}}{{#hasMore}},{{/hasMore}}
      {{/required}}{{#required}}{{paramName}}: {{dataType}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}{{#hasMore}},
      {{/hasMore}}{{/required}}{{/allParams}})(implicit reader: ClientResponseReader[{{#returnType}}{{returnType}}{{/returnType}}{{^returnType}}Unit{{/returnType}}]{{#bodyParams}}, writer: RequestWriter[{{dataType}}]{{/bodyParams}}){{#returnType}}: Future[{{returnType}}]{{/returnType}}{{^returnType}}: Future[Unit]{{/returnType}} = {
    // create path and map variables
    val path = (addFmt("{{path}}"){{#pathParams}}
        replaceAll ("\\{" + "{{baseName}}" + "\\}",{{paramName}}.toString){{/pathParams}})
    // query params
    val queryParams = new mutable.HashMap[String, String]
    val headerParams = new mutable.HashMap[String, String]
    {{#allParams}}
    {{#required}}
    {{^isPrimitiveType}}
    if ({{paramName}} == null) throw new Exception("Missing required parameter '{{paramName}}' when calling {{classname}}->{{operationId}}")
    {{/isPrimitiveType}}
    {{/required}}
    {{/allParams}}
    {{#queryParams}}
    {{^required}}
    if ({{paramName}} != null) {{paramName}}.foreach { v => queryParams += "{{baseName}}" -> v.toString }
    {{/required}}
    {{#required}}
    if ({{paramName}} != null) queryParams += "{{baseName}}" -> {{paramName}}.toString
    {{/required}}
    {{/queryParams}}
    {{#headerParams}}
    headerParams += "{{baseName}}" -> {{paramName}}.toString
    {{/headerParams}}
    val resFuture = client.submit("{{httpMethod}}", path, queryParams.toMap, headerParams.toMap, {{#bodyParam}}writer.write({{paramName}}){{/bodyParam}}{{^bodyParam}}"{{emptyBodyParam}}"{{/bodyParam}})
    resFuture flatMap { resp =>
      process(reader.read(resp))
    }
  }
  {{/operation}}
}
{{/operations}}
    © 2015 - 2025 Weber Informatics LLC | Privacy Policy