YesPlayMusic/packages/main/server.ts

46 lines
1.3 KiB
TypeScript
Raw Normal View History

2022-03-13 14:40:38 +08:00
import { pathCase } from 'change-case'
import cookieParser from 'cookie-parser'
import express, { Request, Response } from 'express'
import logger from './logger'
const neteaseApi = require('NeteaseCloudMusicApi')
const app = express()
app.use(cookieParser())
const port = Number(process.env['ELECTRON_DEV_NETEASE_API_PORT'] ?? 3000)
Object.entries(neteaseApi).forEach(([name, handler]) => {
if (['serveNcmApi', 'getModulesDefinitions'].includes(name)) {
return
}
const wrappedHandler = async (req: Request, res: Response) => {
logger.info(`[server] Handling request: ${req.path}`)
try {
const result = await handler({
...req.query,
// cookie:
// 'MUSIC_U=1239b6c1217d8cd240df9c8fa15e99a62f9aaac86baa7a8aa3166acbad267cd8a237494327fc3ec043124f3fcebe94e446b14e3f0c3f8af9fe5c85647582a507',
// cookie: req.headers.cookie,
cookie: `MUSIC_U=${req.cookies['MUSIC_U']}`,
})
res.send(result.body)
} catch (error) {
res.status(500).send(error)
}
}
app.get(
`/netease/${pathCase(name)}`,
async (req: Request, res: Response) => await wrappedHandler(req, res)
)
app.post(
`/netease/${pathCase(name)}`,
async (req: Request, res: Response) => await wrappedHandler(req, res)
)
})
app.listen(port, () => {
logger.info(`[server] API server listening on port ${port}`)
})