2013-05-18 16:09:27 -04:00

84 lines
2.9 KiB
Plaintext

package {{package}}
{{#imports}}import {{import}}
{{/imports}}
import com.wordnik.swagger.core.ApiPropertiesReader
import org.scalatra.{ TypedParamSupport, ScalatraServlet }
import org.scalatra.swagger._
import org.json4s._
import org.json4s.JsonDSL._
import org.scalatra.json.{ JValueResult, JacksonJsonSupport }
import scala.collection.JavaConverters._
class {{className}} (implicit val swagger: Swagger) extends ScalatraServlet
with JacksonJsonSupport
with SwaggerSupport {
protected implicit val jsonFormats: Formats = DefaultFormats
protected val applicationDescription: String = "{{className}}"
override protected val applicationName: Option[String] = Some("{{baseName}}")
/*
def swaggerToModel(cls: Class[_]) = {
val docObj = ApiPropertiesReader.read(cls)
val name = docObj.getName
val fields = for (field <- docObj.getFields.asScala.filter(d => d.paramType != null))
yield (field.name -> ModelField(field.name, field.notes, DataType(field.paramType)))
Model(name, name, fields.toMap)
}
*/
before() {
contentType = formats("json")
response.headers += ("Access-Control-Allow-Origin" -> "*")
}
{{#operations}}
{{#operation}}
{{newline}}
val {{nickname}}Operation = (apiOperation[{{#returnType}}{{returnType}}{{/returnType}}{{^returnType}}Unit{{/returnType}}]("{{nickname}}")
summary "{{{summary}}}"
parameters(
{{#allParams}}
{{#queryParameter}}
queryParam[{{dataType}}]("{{paramName}}").description(""){{^required}}.optional{{/required}}{{#defaultValue}}.defaultValue({{{defaultValue}}}){{/defaultValue}}
{{/queryParameter}}
{{#pathParameter}}
pathParam[{{dataType}}]("{{paramName}}").description(""){{#defaultValue}}.defaultValue({{{defaultValue}}}){{/defaultValue}}
{{/pathParameter}}
{{#headerParameter}}
headerParam[{{dataType}}]("{{paramName}}").description(""){{^required}}.optional{{/required}}{{#defaultValue}}.defaultValue({{{defaultValue}}}){{/defaultValue}}
{{/headerParameter}}
{{#bodyParameter}}
bodyParam[{{dataType}}]("{{paramName}}").description(""){{^required}}.optional{{/required}}{{#defaultValue}}.defaultValue({{{defaultValue}}}){{/defaultValue}}
{{/bodyParameter}}
{{#hasMore}},{{/hasMore}}
{{/allParams}})
)
{{httpMethod}}("{{path}}",operation({{nickname}}Operation)) {
{{#allParams}}
{{#pathParameter}}
val {{paramName}} = params.getOrElse("{{paramName}}", halt(400))
{{/pathParameter}}
{{#queryParameter}}
val {{paramName}} = params.getAs[{{dataType}}]("{{paramName}}")
{{/queryParameter}}
{{#headerParameter}}
val {{paramName}} = request.getHeader("{{paramName}}")
{{/headerParameter}}
{{#bodyParameter}}
val {{paramName}} = parsedBody.extract[{{dataType}}]
{{/bodyParameter}}
println({{paramName}})
{{/allParams}}
}
{{/operation}}
{{/operations}}
}