@mountainpass/addressr
Version:
Australian Address Validation, Search and Autocomplete
59 lines (57 loc) • 1.66 kB
JavaScript
;
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
};
}