50 lines
1.3 KiB
TypeScript
50 lines
1.3 KiB
TypeScript
import { ApiHandler } from '../../../types'
|
|
// @ts-expect-error
|
|
import { Deezer } from 'deezer-js'
|
|
import { sessionDZ } from '../../../main'
|
|
|
|
const path: ApiHandler['path'] = '/search'
|
|
|
|
const handler: ApiHandler['handler'] = async (req, res) => {
|
|
if (!sessionDZ[req.session.id]) sessionDZ[req.session.id] = new Deezer()
|
|
let dz = sessionDZ[req.session.id]
|
|
|
|
const term = String(req.query.term)
|
|
const type = String(req.query.type)
|
|
const start = parseInt(String(req.query.start))
|
|
const nb = parseInt(String(req.query.nb))
|
|
|
|
let data;
|
|
|
|
switch (type) {
|
|
case 'track':
|
|
data = await dz.api.search_track(term, { limit: nb, index: start })
|
|
break
|
|
case 'album':
|
|
data = await dz.api.search_album(term, { limit: nb, index: start })
|
|
break
|
|
case 'artist':
|
|
data = await dz.api.search_artist(term, { limit: nb, index: start })
|
|
break
|
|
case 'playlist':
|
|
data = await dz.api.search_playlist(term, { limit: nb, index: start })
|
|
break
|
|
case 'radio':
|
|
data = await dz.api.search_radio(term, { limit: nb, index: start })
|
|
break
|
|
case 'user':
|
|
data = await dz.api.search_user(term, { limit: nb, index: start })
|
|
break
|
|
default:
|
|
data = await dz.api.search(term, { limit: nb, index: start })
|
|
break
|
|
}
|
|
|
|
data.type = type
|
|
res.send(data)
|
|
}
|
|
|
|
const apiHandler: ApiHandler = { path, handler }
|
|
|
|
export default apiHandler
|