const logger = require('./logger.js'); const util = require('./util.js'); const constants = require('./constants.js'); const modep = require('./modep.js'); const endpoints = new Map(); function setEndpoints(url, data) { var startTime = new Date(); var index = 0; var elements = []; for (var index = 0; index < data.length; index++) { var element = data[index]; element.id = index; setEndpoint(url + '/' + element.id, [constants.HTTP_GET, constants.HTTP_POST], element); elements.push(element); } elements = elements.sort(function (a, b) { return a.id - b.id; }); setEndpoint(url, constants.HTTP_GET, elements); logger.debug('setting up ' + elements.length + ' endpoint(s) for path \'' + url + '\' took ' + util.timeDiff(startTime) + 'ms'); } function setEndpoint(url, types, data) { logger.debug('setting up \'' + types + '\' endpoint \'' + url + '\'...') endpoints.set(url, { types: types, data: data }); } function getEndpoints() { return endpoints; } function setupEndpoints() { return new Promise(function (resolve, reject) { modep.getBanks() .then(function (data) { setEndpoints(constants.API_BANKS, data); }) .then(modep.getPedalboards) .then(function (data) { setEndpoints(constants.API_PEDALBOARDS, data); }) .then(modep.getDefaultPedalboard) .then(function (data) { setEndpoint(constants.API_PEDALBOARDS_DEFAULT, constants.HTTP_GET, data); }) .then(modep.getCurrentPedalboard) .then(function (data) { setEndpoint(constants.API_PEDALBOARDS_CURRENT, constants.HTTP_GET, data); }) .then(modep.getCurrentPedals) .then(function (data) { setEndpoints(constants.API_PEDALS, data); }) .then(resolve) .catch(reject); }); } module.exports = { setupEndpoints, getEndpoints }