diff --git a/swagger-node-runner/index.d.ts b/swagger-node-runner/index.d.ts index 13962ccfb8..61880b3f8d 100644 --- a/swagger-node-runner/index.d.ts +++ b/swagger-node-runner/index.d.ts @@ -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; } diff --git a/swagger-node-runner/swagger-node-runner-tests.ts b/swagger-node-runner/swagger-node-runner-tests.ts index 73306f2f72..2d20ad21c8 100644 --- a/swagger-node-runner/swagger-node-runner-tests.ts +++ b/swagger-node-runner/swagger-node-runner-tests.ts @@ -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 }; diff --git a/swagger-restify-mw/index.d.ts b/swagger-restify-mw/index.d.ts new file mode 100644 index 0000000000..c9518b2ecb --- /dev/null +++ b/swagger-restify-mw/index.d.ts @@ -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 +// 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; diff --git a/swagger-restify-mw/swagger-restify-mw-tests.ts b/swagger-restify-mw/swagger-restify-mw-tests.ts new file mode 100644 index 0000000000..c8bd436c7c --- /dev/null +++ b/swagger-restify-mw/swagger-restify-mw-tests.ts @@ -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 +}; diff --git a/swagger-restify-mw/tsconfig.json b/swagger-restify-mw/tsconfig.json new file mode 100644 index 0000000000..373744af7c --- /dev/null +++ b/swagger-restify-mw/tsconfig.json @@ -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" + ] +} diff --git a/swagger-restify-mw/tslint.json b/swagger-restify-mw/tslint.json new file mode 100644 index 0000000000..377cc837d4 --- /dev/null +++ b/swagger-restify-mw/tslint.json @@ -0,0 +1 @@ +{ "extends": "../tslint.json" }