Merge pull request #13672 from micmro/swagger-restify-mw

Add swagger-restify-mw
This commit is contained in:
Daniel Rosenwasser
2017-01-02 01:33:17 -05:00
committed by GitHub
6 changed files with 125 additions and 1 deletions
+2 -1
View File
@@ -34,6 +34,7 @@ import { Express, NextFunction } from "express";
import { Spec } from "swagger-schema-official";
import { EventEmitter } from "events";
import * as Hapi from "hapi";
import * as Restify from "restify";
/**
* Config object for SwaggerNodeRunner
@@ -258,7 +259,7 @@ export interface HapiMiddleware extends Middleware {
/** Restify specific Middleware */
export interface RestifyMiddleware extends Middleware {
/** Register this Middleware with `app` */
register: (app: any) => void;
register: (app: Restify.Server) => void;
}
@@ -1,6 +1,7 @@
import * as SwaggerNodeRunner from "swagger-node-runner";
import * as express from "express";
import * as Hapi from "hapi";
import * as restify from "restify";
let config: SwaggerNodeRunner.Config = {
appRoot: __dirname
@@ -45,6 +46,21 @@ SwaggerNodeRunner.create(config, function(err, runner) {
});
// Restify Middelware
let app = restify.createServer();
SwaggerNodeRunner.create(config, function(err, runner) {
if (err) { throw err; }
let restifyMiddelware = runner.restifyMiddleware()
restifyMiddelware.register(app);
let port = process.env.PORT || 10010;
app.listen(port);
});
let swaggerSecurityHandlerCb = (err: Error) => {
//do nothing
};
+47
View File
@@ -0,0 +1,47 @@
// Type definitions for swagger-restify-mw 0.7
// Project: https://github.com/apigee-127/swagger-restify#readme
// Definitions by: Michael Mrowetz <https://github.com/micmro/>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/* =================== USAGE ===================
import * as SwaggerRestify from "swagger-restify-mw";
import * as restify from "restify";
let app = restify.createServer();
let config = {
appRoot: __dirname // required config
} as SwaggerRestify.Config;
SwaggerRestify.create(config, function(err, swaggerRestify) {
if (err) { throw err; }
swaggerRestify.register(app);
let port = process.env.PORT || 10010;
app.listen(port);
if (swaggerRestify.runner.swagger.paths['/hello']) {
console.log('try this:\ncurl http://127.0.0.1:' + port + '/hello?name=Scott');
}
});
=============================================== */
import { Config, RestifyMiddleware } from "swagger-node-runner";
/** export interfaces */
export { Config, RestifyMiddleware } from "swagger-node-runner";
/**
* Create a new instance of a Restify specific `SwaggerNodeRunner` middleware
*
* The `swagger-node-runner` module has the following config priority:
* 1. `swagger_*` environment vars
* 2. `config` passed to `create()`
* 3. read from swagger node in `default.yaml` in config directory
* 4. module defaults
*
* @see @link{https://github.com/apigee-127/swagger-express|Github}
*/
export function create(config: Config, cb: (err: Error | undefined, middleware: RestifyMiddleware) => void): void;
@@ -0,0 +1,39 @@
import * as SwaggerRestify from "swagger-restify-mw";
import * as restify from "restify";
let app = restify.createServer();
let config = {
appRoot: __dirname // required config
} as SwaggerRestify.Config;
SwaggerRestify.create(config, function(err, swaggerRestify) {
if (err) { throw err; }
swaggerRestify.register(app);
let port = process.env.PORT || 10010;
app.listen(port);
});
let swaggerSecurityHandlerCb = (err: Error) => {
//do nothing
};
let configComplex: SwaggerRestify.Config = {
appRoot: __dirname,
configDir: "some/directory",
controllersDirs: ["some/directory"],
fittingsDirs: ["some/directory"],
mockMode: true,
swaggerControllerPipe: 'swagger_controllers',
swaggerSecurityHandlers: {
// did not manage to research the typings of first 3 arguments
someHandlerName: ({}, {}, {}, swaggerSecurityHandlerCb) => {
//do nothing
}
},
validateResponse: true
};
+20
View File
@@ -0,0 +1,20 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"swagger-restify-mw-tests.ts"
]
}
+1
View File
@@ -0,0 +1 @@
{ "extends": "../tslint.json" }