Implemented simple queue structure

This commit is contained in:
RemixDev
2021-05-13 18:14:38 +02:00
parent 7b16ddc91a
commit dbc1e2bcfb
7 changed files with 148 additions and 20 deletions

View File

@@ -0,0 +1,38 @@
// @ts-expect-error
import { Deezer } from 'deezer-js'
import { ApiHandler } from '../../../types'
import { sessionDZ, addToQueue, settings } from '../../../main'
const path: ApiHandler['path'] = '/addToQueue'
const handler: ApiHandler['handler'] = async (req, res) => {
if (!sessionDZ[req.session.id]) sessionDZ[req.session.id] = new Deezer()
const dz = sessionDZ[req.session.id]
const url = req.query.url
let bitrate = req.query.bitrate
if (bitrate === 'null') bitrate = settings.maxBitrate
let obj: any;
try {
obj = await addToQueue(dz, url, bitrate)
} catch (e){
switch (e.name) {
case 'AlreadyInQueue':
res.send({result: false, errid: e.name, data: {url, bitrate, obj: e.data}})
break
default:
console.error(e)
case 'NotLoggedIn':
res.send({result: false, errid: e.name, data: {url, bitrate}})
break
}
return
}
res.send({result: true, data: {url, bitrate, obj}})
}
const apiHandler: ApiHandler = { path, handler }
export default apiHandler

View File

@@ -1,3 +1,4 @@
import loginArl from './login-arl'
import addToQueue from './addToQueue'
export default [loginArl]
export default [loginArl, addToQueue]