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}} }