From 178d7d19c4f2dee36a7aba0c15a1c72c862afb72 Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Wed, 1 Oct 2014 23:22:39 -0700 Subject: [PATCH] added files --- src/main/resources/nodejs/README.mustache | 10 +++++ src/main/resources/nodejs/api.mustache | 52 ++++++++++++++++++++++ src/main/resources/nodejs/main.mustache | 47 +++++++++++++++++++ src/main/resources/nodejs/models.mustache | 3 ++ src/main/resources/nodejs/package.mustache | 16 +++++++ 5 files changed, 128 insertions(+) create mode 100644 src/main/resources/nodejs/README.mustache create mode 100644 src/main/resources/nodejs/api.mustache create mode 100644 src/main/resources/nodejs/main.mustache create mode 100644 src/main/resources/nodejs/models.mustache create mode 100755 src/main/resources/nodejs/package.mustache diff --git a/src/main/resources/nodejs/README.mustache b/src/main/resources/nodejs/README.mustache new file mode 100644 index 00000000000..881e7dd92c5 --- /dev/null +++ b/src/main/resources/nodejs/README.mustache @@ -0,0 +1,10 @@ +# Swagger generated server + +## Overview +This server was generated by the [swagger-codegen](https://github.com/wordnik/swagger-codegen) project. By using the +[swagger-spec](https://github.com/wordnik/swagger-core/wiki) from a remote server, you can easily generate a server stub. This +is an example of building a node.js server. + +This example uses the [expressjs](http://expressjs.com/) framework. To see how to make this your own, look here: + +[README](https://github.com/wordnik/swagger-codegen/tree/master/samples/server-generator/node) \ No newline at end of file diff --git a/src/main/resources/nodejs/api.mustache b/src/main/resources/nodejs/api.mustache new file mode 100644 index 00000000000..93560fbe2ad --- /dev/null +++ b/src/main/resources/nodejs/api.mustache @@ -0,0 +1,52 @@ +var swagger = require("swagger-node-express"); +var url = require("url"); +var errors = swagger.errors; +var params = swagger.params; + +/* add model includes */ + +function writeResponse (response, data) { + response.header('Access-Control-Allow-Origin', "*"); + response.header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT"); + response.header("Access-Control-Allow-Headers", "Content-Type"); + response.header("Content-Type", "application/json; charset=utf-8"); + response.send(JSON.stringify(data)); +} + +exports.models = models = require("../models.js"); + +{{#operations}} +{{#operation}} +exports.{{nickname}} = { + 'spec': { + "description" : "Operations about pets", + "path" : "{{path}}", + "notes" : "{{{notes}}}", + "summary" : "{{{summary}}}", + "method": "{{httpMethod}}", + "params" : [{{#queryParams}} + params.query("{{paramName}}", "{{description}}", "{{swaggerDataType}}", {{#required}}true{{/required}}{{^required}}false{{/required}}, {{#allowMultiple}}true{{/allowMultiple}}{{^allowMultiple}}false{{/allowMultiple}}, "{{{allowableValues}}}"{{#defaultValue}}, {{{defaultValue}}}{{/defaultValue}}){{#hasMore}},{{/hasMore}} + {{/queryParams}}].concat([{{#pathParams}} + params.path("{{paramName}}", "{{description}}"){{#hasMore}},{{/hasMore}} + {{/pathParams}}]).concat([{{#headerParams}} + params.header("{{paramName}}", "{{description}}"){{#hasMore}},{{/hasMore}} + {{/headerParams}}]).concat([{{#bodyParams}} + params.body("body", "{{swaggerDataType}}", "{{description}}", {{#required}}{{required}}{{/required}}{{^required}}false{{/required}}) + {{/bodyParams}}]), + "type" : "{{returnType}}", + "responseMessages" : [errors.invalid('id'), errors.notFound('{{returnType}}')], + "nickname" : "{{nickname}}" + }, + 'action': function (req,res) { + {{#requiredParamCount}} + {{#requiredParams}} + if (!req.params.{{baseName}}) { + throw errors.invalid('{{baseName}}'); + } + {{/requiredParams}} + {{/requiredParamCount}} + writeResponse(res, {message: "how about implementing {{nickname}} as a {{httpMethod}} method?"}); + } +}; +{{/operation}} +{{/operations}} \ No newline at end of file diff --git a/src/main/resources/nodejs/main.mustache b/src/main/resources/nodejs/main.mustache new file mode 100644 index 00000000000..6005108643d --- /dev/null +++ b/src/main/resources/nodejs/main.mustache @@ -0,0 +1,47 @@ +var express = require("express") + , url = require("url") + , cors = require("cors") + , swagger = require("swagger-node-express") + , db = false + +var app = express(); +app.use(express.bodyParser()); + +var corsOptions = { + credentials: true, + origin: function(origin,callback) { + if(origin===undefined) { + callback(null,false); + } else { + callback(null,true); + } + } +}; + +app.use(cors(corsOptions)); + +swagger.setAppHandler(app); +swagger.configureSwaggerPaths("", "api-docs", "") + +var models = require("./models.js"); + +{{#apiInfo}} +{{#apis}} +var {{classname}} = require("./{{apiFolder}}/{{classname}}.js"); +{{/apis}} +{{/apiInfo}} + +swagger.addModels(models) + {{#apiInfo}} + {{#apis}} + {{#operations}} + {{#operation}}.add{{httpMethod}}({{classname}}.{{nickname}}){{newline}}{{/operation}} + {{/operations}} + {{/apis}}; + {{/apiInfo}} + +// configures the app +swagger.configure("http://localhost:8002", "0.1"); + +// start the server +app.listen(8002); diff --git a/src/main/resources/nodejs/models.mustache b/src/main/resources/nodejs/models.mustache new file mode 100644 index 00000000000..133fe7c1515 --- /dev/null +++ b/src/main/resources/nodejs/models.mustache @@ -0,0 +1,3 @@ +exports.models = { + {{#models}}{{#model}}"{{classVarName}}": {{{modelJson}}}{{#hasMoreModels}},{{/hasMoreModels}}{{/model}}{{/models}} +} \ No newline at end of file diff --git a/src/main/resources/nodejs/package.mustache b/src/main/resources/nodejs/package.mustache new file mode 100755 index 00000000000..322dc819966 --- /dev/null +++ b/src/main/resources/nodejs/package.mustache @@ -0,0 +1,16 @@ +{ + "name": "{{{artifactId}}}", + "description": "Wordnik node.js server generator", + "version": "{{{artifactVersion}}}", + "homepage": "{{{homepage}}}", + "main": "./{{codeDir}}/main.js", + "engines": { + "node": ">= 0.8.x" + }, + "dependencies": { + "swagger-node-express": ">= 2.0.x", + "connect": ">= 1.8.x", + "cors": "2.1.1", + "express": "3.x" + } +} \ No newline at end of file