a127-magic
Advanced tools
Comparing version 0.8.1 to 0.9.0
@@ -32,3 +32,3 @@ /**************************************************************************** | ||
var debug = require('debug')('a127'); | ||
var _ = require('underscore'); | ||
var _ = require('lodash'); | ||
var loader = require('./loader'); | ||
@@ -35,0 +35,0 @@ var volosSwagger = require('volos-swagger'); |
@@ -26,5 +26,10 @@ /**************************************************************************** | ||
var a127Config = require('./config'); | ||
var CORS = require('cors'); | ||
var debug = require('debug')('a127'); | ||
var _ = require('lodash'); | ||
var YAML = require('yamljs'); | ||
// default filter just drops all the x- labels | ||
var DROP_SWAGGER_EXTENSIONS = /^(?!x-.*)/; | ||
module.exports = middleware; | ||
@@ -83,2 +88,6 @@ | ||
if (config.docEndpoints && config.docEndpoints.raw) { | ||
middlewares.push(swaggerDoc(config.docEndpoints, magic.swaggerObject)); | ||
} | ||
return chain(middlewares); | ||
@@ -114,1 +123,55 @@ } | ||
} | ||
function swaggerDoc(docEndpoints, swaggerObject) { | ||
var rawDocPath = docEndpoints.raw; | ||
debug('swagger raw doc path: %s', rawDocPath); | ||
var filter = DROP_SWAGGER_EXTENSIONS; | ||
if (docEndpoints.filter) { | ||
filter = new RegExp(docEndpoints.filter); | ||
} | ||
debug('swagger doc filter: %s', filter); | ||
var filteredSwagger = filterKeysRecursive(swaggerObject, filter); | ||
// should this just be based on accept type? | ||
var yaml = YAML.stringify(filteredSwagger, 99, 2); | ||
var json = JSON.stringify(filteredSwagger, null, 2); | ||
return function swaggerDoc(req, res, next) { | ||
if (rawDocPath) { | ||
try { | ||
if (!req.path) { | ||
req.path = Url.parse(req.url).path | ||
} | ||
if (rawDocPath.indexOf(req.path) != -1) { | ||
if (req.headers['accept'].indexOf('yaml') != -1) { | ||
res.setHeader('Content-Type', 'application/yaml'); | ||
return res.end(yaml); | ||
} else { | ||
res.setHeader('Content-Type', 'application/json'); | ||
return res.end(json); | ||
} | ||
} | ||
} catch (err) { | ||
return next(err); | ||
} | ||
} | ||
next(); | ||
}; | ||
} | ||
function filterKeysRecursive(object, regex) { | ||
if (_.isPlainObject(object)) { | ||
var result = {}; | ||
_.each(object, function(value, key) { | ||
if (regex.test(key)) { | ||
result[key] = filterKeysRecursive(value, regex); | ||
} | ||
}); | ||
return result; | ||
} | ||
return object; | ||
} | ||
{ | ||
"name": "a127-magic", | ||
"version": "0.8.1", | ||
"version": "0.9.0", | ||
"description": "Apigee 127 Swagger Loader and Middleware", | ||
@@ -21,5 +21,5 @@ "keywords": [ | ||
"debug": "1.0.x", | ||
"lodash": "^3.7.0", | ||
"splitargs": "0.0.3", | ||
"swagger-tools": "^0.8.0", | ||
"underscore": "1.6.x", | ||
"volos-swagger": "^0.7.0", | ||
@@ -26,0 +26,0 @@ "yamljs": "0.1.x" |
Sorry, the diff of this file is not supported yet
107619
734
+ Addedlodash@^3.7.0
- Removedunderscore@1.6.x