pbc/libs/api.js
2022-02-07 15:41:27 +01:00

64 lines
2 KiB
JavaScript

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
}