diff --git a/index.js b/index.js index 21a8e8f..ed920fa 100644 --- a/index.js +++ b/index.js @@ -129,6 +129,11 @@ function mountSwagger(loopbackApplication, swaggerApp, opts) { setupCors(swaggerApp, remotes); swaggerApp.get(resourcePath, function sendSwaggerObject(req, res) { + if (swaggerObject && swaggerObject.paths && req.query && req.query.model) { + swaggerObject.paths = _.pickBy(swaggerObject.paths, function(val, key) { + return key.indexOf('/' + req.query.model) === 0; + }); + } res.status(200).send(swaggerObject); }); } diff --git a/package.json b/package.json index d4e605f..f681274 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "cors": "^2.7.1", "debug": "^2.2.0", "depd": "^1.1.0", - "lodash": "^3.10.0", + "lodash": "^4.17.4", "loopback-swagger": "^5.0.0", "strong-globalize": "^2.6.2", "swagger-ui": "^2.2.5" diff --git a/public/lib/loadSwaggerUI.js b/public/lib/loadSwaggerUI.js index 595436c..1442c36 100644 --- a/public/lib/loadSwaggerUI.js +++ b/public/lib/loadSwaggerUI.js @@ -20,12 +20,26 @@ $(function() { }); var accessToken; + function GetParameterValues(param) { + var url = window.location.href.slice(window.location.href.indexOf('?') + 1) + .split('&'); + for (var i = 0; i < url.length; i++) { + var urlparam = url[i].split('='); + if (urlparam[0] === param) { + return urlparam[1]; + } + } + } function loadSwaggerUi(config) { var methodOrder = ['get', 'head', 'options', 'put', 'post', 'delete']; + var url = config.url || '/swagger/resources'; + if (GetParameterValues('model')) { + url += '?model=' + GetParameterValues('model'); + } /* eslint-disable camelcase */ window.swaggerUi = new SwaggerUi({ validatorUrl: null, - url: config.url || '/swagger/resources', + url: url, apiKey: '', dom_id: 'swagger-ui-container', supportHeaderParams: true,