mirror of
https://gitlab.com/Binaryify/neteasecloudmusicapi.git
synced 2025-07-07 00:12:07 +08:00
no intrusive with legacy code
This commit is contained in:
113
app.js
113
app.js
@ -42,14 +42,6 @@ app.use(cache('2 minutes', onlyStatus200))
|
||||
|
||||
app.use(express.static(path.resolve(__dirname, 'public')))
|
||||
|
||||
app.use(function(req, res, next) {
|
||||
const proxy = req.query.proxy
|
||||
if (proxy) {
|
||||
req.headers.cookie += `__proxy__${proxy}`
|
||||
}
|
||||
next()
|
||||
})
|
||||
|
||||
// 补全缺失的cookie
|
||||
const { completeCookie } = require('./util/init')
|
||||
app.use(function(req, res, next) {
|
||||
@ -59,6 +51,24 @@ app.use(function(req, res, next) {
|
||||
next()
|
||||
})
|
||||
|
||||
// cookie parser
|
||||
app.use(function(req, res, next) {
|
||||
req.cookies = {}, (req.headers.cookie || '').split(/\s*;\s*/).forEach(pair => {
|
||||
let crack = pair.indexOf('=')
|
||||
if(crack < 1 || crack == pair.length - 1) return
|
||||
req.cookies[decodeURIComponent(pair.slice(0, crack)).trim()] = decodeURIComponent(pair.slice(crack + 1)).trim()
|
||||
})
|
||||
next()
|
||||
})
|
||||
|
||||
app.use(function(req, res, next) {
|
||||
const proxy = req.query.proxy
|
||||
if (proxy) {
|
||||
req.headers.cookie += `__proxy__${proxy}`
|
||||
}
|
||||
next()
|
||||
})
|
||||
|
||||
// 因为这几个文件对外所注册的路由 和 其他文件对外注册的路由规则不一样, 所以专门写个MAP对这些文件做特殊处理
|
||||
const UnusualRouteFileMap = {
|
||||
// key 为文件名, value 为对外注册的路由
|
||||
@ -72,66 +82,41 @@ const { createWebAPIRequest, request } = require('./util/util')
|
||||
const Wrap = fn => (req, res) => fn(req, res, createWebAPIRequest, request)
|
||||
|
||||
// 同步读取 router 目录中的js文件, 根据命名规则, 自动注册路由
|
||||
fs.readdirSync(path.resolve(__dirname, 'router'))
|
||||
.reverse()
|
||||
.forEach(file => {
|
||||
if (/\.js$/i.test(file) === false) {
|
||||
return
|
||||
}
|
||||
fs.readdirSync(path.join(__dirname, 'router'))
|
||||
.reverse()
|
||||
.forEach(file => {
|
||||
if (!/\.js$/i.test(file)) return
|
||||
let route = (file in UnusualRouteFileMap) ? UnusualRouteFileMap[file] : '/' + file.replace(/\.js$/i, '').replace(/_/g, '/')
|
||||
app.use(route, Wrap(path.join(__dirname, 'router', file)))
|
||||
})
|
||||
|
||||
let route
|
||||
|
||||
if (typeof UnusualRouteFileMap[file] !== 'undefined') {
|
||||
route = UnusualRouteFileMap[file]
|
||||
} else {
|
||||
route =
|
||||
'/' +
|
||||
file
|
||||
.replace(/\.js$/i, '')
|
||||
.replace(/_/g, '/')
|
||||
}
|
||||
|
||||
app.use(route, Wrap(require('./router/' + file)))
|
||||
})
|
||||
|
||||
const requestMod = require('./util/request')
|
||||
let dev = express()
|
||||
fs.readdirSync(path.resolve(__dirname, 'module'))
|
||||
.reverse()
|
||||
.forEach(file => {
|
||||
if (/\.js$/i.test(file) === false) {
|
||||
return
|
||||
}
|
||||
|
||||
let route
|
||||
|
||||
if (typeof UnusualRouteFileMap[file] !== 'undefined') {
|
||||
route = UnusualRouteFileMap[file]
|
||||
} else {
|
||||
route =
|
||||
'/' +
|
||||
file
|
||||
.replace(/\.js$/i, '')
|
||||
.replace(/_/g, '/')
|
||||
}
|
||||
|
||||
dev.use(route, (req, res) => {
|
||||
let question = require('./module/' + file)
|
||||
let query = {...req.query, cookie: req.headers.cookie}
|
||||
question(query, requestMod)
|
||||
.then(answer => {
|
||||
console.log('[OK]', req.originalUrl)
|
||||
res.append('Set-Cookie', answer.cookie)
|
||||
res.status(answer.code).send(answer.body)
|
||||
})
|
||||
.catch( answer => {
|
||||
console.log('[ERROR]', req.originalUrl)
|
||||
res.append('Set-Cookie', answer.cookie)
|
||||
res.status(answer.code).send(answer.body)
|
||||
})
|
||||
// 改写router为module
|
||||
const requestMod = require('./util/request')
|
||||
let dev = express()
|
||||
fs.readdirSync(path.join(__dirname, 'module'))
|
||||
.reverse()
|
||||
.forEach(file => {
|
||||
if (!(/\.js$/i.test(file))) return
|
||||
let route = (file in UnusualRouteFileMap) ? UnusualRouteFileMap[file] : '/' + file.replace(/\.js$/i, '').replace(/_/g, '/')
|
||||
let question = require(path.join(__dirname, 'module', file))
|
||||
|
||||
dev.use(route, (req, res) => {
|
||||
let query = {...req.query, cookie: req.cookies}
|
||||
question(query, requestMod)
|
||||
.then(answer => {
|
||||
console.log('[OK]', decodeURIComponent(req.originalUrl))
|
||||
res.append('Set-Cookie', answer.cookie)
|
||||
res.status(answer.status).send(answer.body)
|
||||
})
|
||||
.catch(answer => {
|
||||
console.log('[ERR]', decodeURIComponent(req.originalUrl))
|
||||
res.append('Set-Cookie', answer.cookie)
|
||||
res.status(answer.status).send(answer.body)
|
||||
})
|
||||
})
|
||||
app.use('/dev', dev)
|
||||
})
|
||||
app.use('/dev', dev)
|
||||
|
||||
const port = process.env.PORT || 3000
|
||||
|
||||
|
Reference in New Issue
Block a user