forked from loafle/openapi-generator-original
96 lines
3.4 KiB
Plaintext
96 lines
3.4 KiB
Plaintext
{{>licenseInfo}}
|
|
package {{package}}
|
|
|
|
{{#imports}}import {{import}}
|
|
{{/imports}}
|
|
import {{invokerPackage}}.ApiInvoker
|
|
import {{invokerPackage}}.ApiException
|
|
|
|
import com.sun.jersey.multipart.FormDataMultiPart
|
|
import com.sun.jersey.multipart.file.FileDataBodyPart
|
|
|
|
import javax.ws.rs.core.MediaType
|
|
|
|
import java.io.File
|
|
import java.util.Date
|
|
|
|
import scala.collection.mutable.HashMap
|
|
|
|
{{#operations}}
|
|
class {{classname}}(val defBasePath: String = "{{basePath}}",
|
|
defApiInvoker: ApiInvoker = ApiInvoker) {
|
|
var basePath = defBasePath
|
|
var apiInvoker = defApiInvoker
|
|
|
|
def addHeader(key: String, value: String) = apiInvoker.defaultHeaders += key -> value
|
|
|
|
{{#operation}}
|
|
/**
|
|
* {{summary}}
|
|
* {{notes}}
|
|
{{#allParams}} * @param {{paramName}} {{description}} {{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}
|
|
{{/allParams}} * @return {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}}
|
|
*/
|
|
def {{operationId}} ({{#allParams}}{{paramName}}: {{dataType}}{{#defaultValue}} /* = {{{defaultValue}}} */{{/defaultValue}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) {{#returnType}}: Option[{{returnType}}]{{/returnType}} = {
|
|
// create path and map variables
|
|
val path = "{{path}}".replaceAll("\\{format\\}","json"){{#pathParams}}.replaceAll("\\{" + "{{baseName}}" + "\\}",apiInvoker.escape({{paramName}}))
|
|
|
|
{{/pathParams}}
|
|
|
|
val contentTypes = List({{#consumes}}"{{{mediaType}}}", {{/consumes}}"application/json")
|
|
val contentType = contentTypes(0)
|
|
|
|
// query params
|
|
val queryParams = new HashMap[String, String]
|
|
val headerParams = new HashMap[String, String]
|
|
val formParams = new HashMap[String, String]
|
|
|
|
{{#allParams}}
|
|
{{#required}}
|
|
{{^isPrimitiveType}}
|
|
if ({{paramName}} == null) throw new Exception("Missing required parameter '{{paramName}}' when calling {{classname}}->{{operationId}}")
|
|
|
|
{{/isPrimitiveType}}
|
|
{{/required}}
|
|
{{/allParams}}
|
|
{{#queryParams}}if(String.valueOf({{paramName}}) != "null") queryParams += "{{baseName}}" -> {{paramName}}.toString
|
|
{{/queryParams}}
|
|
|
|
{{#headerParams}}headerParams += "{{baseName}}" -> {{paramName}}
|
|
{{/headerParams}}
|
|
|
|
var postBody: AnyRef = {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}null{{/bodyParam}}
|
|
|
|
if(contentType.startsWith("multipart/form-data")) {
|
|
val mp = new FormDataMultiPart()
|
|
{{#formParams}}{{#notFile}}
|
|
mp.field("{{baseName}}", {{paramName}}.toString(), MediaType.MULTIPART_FORM_DATA_TYPE)
|
|
{{/notFile}}{{#isFile}}
|
|
mp.field("{{baseName}}", file.getName)
|
|
mp.bodyPart(new FileDataBodyPart("{{baseName}}", {{paramName}}, MediaType.MULTIPART_FORM_DATA_TYPE))
|
|
{{/isFile}}{{/formParams}}
|
|
postBody = mp
|
|
}
|
|
else {
|
|
{{#formParams}}
|
|
{{#notFile}}formParams += "{{baseName}}" -> {{paramName}}.toString(){{/notFile}}
|
|
{{/formParams}}
|
|
}
|
|
|
|
try {
|
|
apiInvoker.invokeApi(basePath, path, "{{httpMethod}}", queryParams.toMap, formParams.toMap, postBody, headerParams.toMap, contentType) match {
|
|
case s: String =>
|
|
{{#returnType}} Some(ApiInvoker.deserialize(s, "{{returnContainer}}", classOf[{{returnBaseType}}]).asInstanceOf[{{returnType}}])
|
|
{{/returnType}}
|
|
case _ => None
|
|
}
|
|
} catch {
|
|
case ex: ApiException if ex.code == 404 => None
|
|
case ex: ApiException => throw ex
|
|
}
|
|
}
|
|
|
|
{{/operation}}
|
|
}
|
|
{{/operations}}
|