2012-10-09 09:37:49 -07:00

86 lines
3.0 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, NativeJsonSupport}
import scala.collection.JavaConverters._
class {{className}} (implicit val swagger: Swagger) extends ScalatraServlet
with TypedParamSupport
with NativeJsonSupport
with JValueResult
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}}
{{httpMethod}}("{{path}}",
summary("{{{summary}}}"),
nickname("{{nickname}}"),
responseClass("{{#returnType}}{{returnType}}{{/returnType}}{{^returnType}}void{{/returnType}}"),
endpoint("{{basePart}}"),
notes("{{{notes}}}"),
parameters(
{{#allParams}}
{{#queryParameter}}
Parameter(name = "{{paramName}}",
description = "{{{description}}}",
paramType = ParamType.Query,
required = {{required}},
allowMultiple = {{allowMultiple}},
{{#allowableValues}}allowableValues = {{{allowableValues}}},{{newline}}{{/allowableValues}}
defaultValue = {{#defaultValue}}Some({{{defaultValue}}}){{/defaultValue}}{{^defaultValue}}None{{/defaultValue}},
dataType = DataType("{{dataType}}"))
{{/queryParameter}}
{{#pathParameter}}
Parameter(name = "{{paramName}}",
description = "{{{description}}}",
dataType = DataType.String,
{{#allowableValues}}allowableValues = {{{allowableValues}}},{{newline}}{{/allowableValues}}
defaultValue = {{#defaultValue}}Some({{{defaultValue}}}){{/defaultValue}}{{^defaultValue}}None{{/defaultValue}},
paramType = ParamType.Path)
{{/pathParameter}}
{{#headerParameter}}
Parameter(name = "{{paramName}}",
description = "{{{description}}}",
dataType = DataType("{{dataType}}"),
paramType = ParamType.Header)
{{/headerParameter}}
{{#bodyParameter}}
Parameter(name = "{{paramName}}",
description = "{{{description}}}",
dataType = DataType("{{dataType}}"),
paramType = ParamType.Body)
{{/bodyParameter}}{{#hasMore}},{{/hasMore}}
{{/allParams}}
)) {
// do something
}
{{/operation}}
{{/operations}}
}