UNPKG

@mountainpass/addressr

Version:

Australian Address Validation, Search and Autocomplete

59 lines (57 loc) 1.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getApiRoot = getApiRoot; var _debug = require("debug"); var _debug2 = _interopRequireDefault(_debug); var _httpLinkHeader = require("http-link-header"); var _httpLinkHeader2 = _interopRequireDefault(_httpLinkHeader); var _setLinkOptions = require("./setLinkOptions"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var logger = (0, _debug2.default)('api'); /** * API Root * returns a list of available APIs within the `Link` headers * * returns Root **/ async function getApiRoot() { const paths = Object.keys(global.swaggerDoc.paths).filter(p => global.swaggerDoc.paths[p].get !== undefined && global.swaggerDoc.paths[p].get['x-root-rel'] !== undefined); const link = new _httpLinkHeader2.default(); paths.forEach(p => { const op = global.swaggerDoc.paths[p].get; if (op.parameters && op.parameters.find(parameter => parameter.required === true)) { // skip } else { link.set({ rel: op['x-root-rel'], uri: p, title: op.summary }); } }); link.set({ rel: 'describedby', uri: '/docs/', title: 'API Docs', type: 'text/html' }); link.set({ rel: 'describedby', uri: '/api-docs', title: 'API Docs', type: 'application/json' }); const linkTemplate = new _httpLinkHeader2.default(); paths.forEach(url => { const op = global.swaggerDoc.paths[url].get; logger(op); (0, _setLinkOptions.setLinkOptions)(op, url, linkTemplate); }); return { link: link, body: {}, linkTemplate: linkTemplate }; }