api_server/api.js (33 lines of code) (raw):

const _ = require("lodash"); 'use strict'; /** * * @param name */ function Api(name) { this.globalRules = {}; this.endpoints = {}; this.name = name; } (function (cls) { cls.addGlobalAutocompleteRules = function (parentNode, rules) { this.globalRules[parentNode] = rules; }; cls.addEndpointDescription = function (endpoint, description) { if (this.endpoints[endpoint]) { throw new Error("endpoint [" + endpoint + "] is already registered"); } var copiedDescription = {}; _.extend(copiedDescription, description || {}); _.defaults(copiedDescription, { id: endpoint, patterns: [endpoint], methods: ['GET'] }); this.endpoints[endpoint] = copiedDescription; }; cls.asJson = function () { return { "name": this.name, "globals": this.globalRules, "endpoints": this.endpoints } }; }(Api.prototype)); module.exports = Api;