2022-04-22 15:58:04 +02:00
|
|
|
const AudioServer = require("./AudioServer");
|
|
|
|
|
|
|
|
class Api {
|
|
|
|
|
|
|
|
constructor() {
|
|
|
|
this.get = new Map();
|
|
|
|
this.post = new Map();
|
|
|
|
this.#setup();
|
|
|
|
}
|
|
|
|
|
|
|
|
async handleRequest(request) {
|
|
|
|
if (request === undefined) {
|
|
|
|
return this.#createRequestResult(500);
|
|
|
|
}
|
|
|
|
const fn = this.#getFunction(request.url, request.method.toLowerCase());
|
|
|
|
if (fn === undefined) {
|
|
|
|
return this.#createRequestResult(501);
|
|
|
|
}
|
|
|
|
await fn();
|
|
|
|
return this.#createRequestResult();
|
|
|
|
}
|
|
|
|
|
|
|
|
#createRequestResult(code, message) {
|
|
|
|
if (code === undefined) {
|
|
|
|
code = 200;
|
|
|
|
}
|
|
|
|
const result = {
|
|
|
|
code: code
|
|
|
|
};
|
|
|
|
if (message !== undefined) {
|
|
|
|
result.message = message;
|
|
|
|
}
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
#setup() {
|
2022-04-29 16:50:56 +02:00
|
|
|
this.#registerEndpoint(constants.API_PLAY, constants.REQUEST_METHOD_POST, async () => {
|
|
|
|
if (global.audioserver !== undefined) {
|
|
|
|
await global.audioserver.destroy();
|
|
|
|
}
|
2022-05-04 15:05:57 +02:00
|
|
|
global.audioserver = new AudioServer('/home/velvettear/mounts/kingston/public/YOU_SUFFER.mp3');
|
2022-04-29 16:50:56 +02:00
|
|
|
});
|
2022-05-02 14:19:30 +02:00
|
|
|
this.#registerEndpoint(constants.API_RESUME, constants.REQUEST_METHOD_POST, async () => {
|
2022-04-29 16:50:56 +02:00
|
|
|
if (global.audioserver === undefined) {
|
|
|
|
return;
|
|
|
|
}
|
2022-05-02 14:19:30 +02:00
|
|
|
await global.audioserver.destroy();
|
2022-05-04 15:05:57 +02:00
|
|
|
global.audioserver = new AudioServer('/home/velvettear/mounts/kingston/public/YOU_SUFFER.mp3', global.audioserver.progress);
|
2022-04-29 16:50:56 +02:00
|
|
|
});
|
2022-05-02 14:19:30 +02:00
|
|
|
this.#registerEndpoint(constants.API_PAUSE, constants.REQUEST_METHOD_POST, async () => {
|
2022-04-29 16:50:56 +02:00
|
|
|
if (global.audioserver === undefined) {
|
|
|
|
return;
|
|
|
|
}
|
2022-05-02 14:19:30 +02:00
|
|
|
global.audioserver.pausePlayback();
|
2022-04-29 16:50:56 +02:00
|
|
|
});
|
|
|
|
this.#registerEndpoint(constants.API_STOP, constants.REQUEST_METHOD_POST, async () => {
|
|
|
|
if (global.audioserver === undefined) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
global.audioserver.stopPlayback();
|
2022-04-22 15:58:04 +02:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
#getFunction(url, method) {
|
|
|
|
if (url === undefined || method === undefined || this[method] === undefined) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return this[method].get(url);
|
|
|
|
}
|
|
|
|
|
|
|
|
#registerEndpoint(url, method, fn) {
|
|
|
|
if (url === undefined || method === undefined || fn === undefined || this[method] === undefined) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
this[method].set(url, fn);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = Api;
|