added argument parser and playback of a track specified by id
This commit is contained in:
parent
e707b12be8
commit
027da080da
1 changed files with 40 additions and 5 deletions
|
@ -16,10 +16,28 @@ class Api {
|
|||
if (fn === undefined) {
|
||||
return this.#createRequestResult(501);
|
||||
}
|
||||
await fn();
|
||||
await fn(await this.#getRequestArguments(request));
|
||||
return this.#createRequestResult();
|
||||
}
|
||||
|
||||
#getRequestArguments(request) {
|
||||
if (request === undefined) {
|
||||
return;
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
let args = '';
|
||||
request.on('data', (data) => {
|
||||
args += data;
|
||||
});
|
||||
request.on('end', () => {
|
||||
if (args == undefined || args.length == 0) {
|
||||
return resolve();
|
||||
}
|
||||
return resolve(new URLSearchParams(args));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
#createRequestResult(code, message) {
|
||||
if (code === undefined) {
|
||||
code = 200;
|
||||
|
@ -34,20 +52,37 @@ class Api {
|
|||
}
|
||||
|
||||
#setup() {
|
||||
this.#registerEndpoint(constants.API_PLAY, constants.REQUEST_METHOD_POST, async () => {
|
||||
this.#registerEndpoint(constants.API_PLAY, constants.REQUEST_METHOD_POST, async (args) => {
|
||||
const id = args.get('id');
|
||||
if (id === undefined) {
|
||||
return;
|
||||
}
|
||||
if (global.audioserver !== undefined) {
|
||||
await global.audioserver.destroy();
|
||||
}
|
||||
global.audioserver = new AudioServer('/home/velvettear/mounts/kingston/public/YOU_SUFFER.mp3');
|
||||
let track;
|
||||
try {
|
||||
track = await database.models.Track.findOne({
|
||||
where: {
|
||||
id: id
|
||||
}
|
||||
});
|
||||
} catch (err) {
|
||||
logger.error('error finding track \'' + id + '\' > ' + err);
|
||||
}
|
||||
if (track === undefined) {
|
||||
return;
|
||||
}
|
||||
global.audioserver = new AudioServer(track.file);
|
||||
});
|
||||
this.#registerEndpoint(constants.API_RESUME, constants.REQUEST_METHOD_POST, async () => {
|
||||
this.#registerEndpoint(constants.API_RESUME, constants.REQUEST_METHOD_POST, async (args) => {
|
||||
if (global.audioserver === undefined) {
|
||||
return;
|
||||
}
|
||||
await global.audioserver.destroy();
|
||||
global.audioserver = new AudioServer('/home/velvettear/mounts/kingston/public/YOU_SUFFER.mp3', global.audioserver.progress);
|
||||
});
|
||||
this.#registerEndpoint(constants.API_PAUSE, constants.REQUEST_METHOD_POST, async () => {
|
||||
this.#registerEndpoint(constants.API_PAUSE, constants.REQUEST_METHOD_POST, async (args) => {
|
||||
if (global.audioserver === undefined) {
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue