kopia lustrzana https://github.com/badgen/badgen.net
Merge `schemes` and `handler` to `handlers`
rodzic
2ccc8ac854
commit
9294f091c4
|
@ -10,11 +10,6 @@ const examples = [
|
|||
'/badge/platform/ios,macos,tvos?list=1'
|
||||
]
|
||||
|
||||
const schemes = [
|
||||
'/badge/:label/:status',
|
||||
'/badge/:label/:status/:color'
|
||||
]
|
||||
|
||||
const handler = async (args) => {
|
||||
const { label, status, color } = args
|
||||
return {
|
||||
|
@ -24,4 +19,9 @@ const handler = async (args) => {
|
|||
}
|
||||
}
|
||||
|
||||
module.exports = badgenServe(schemes, handler, { help, examples })
|
||||
const handlers = {
|
||||
'/badge/:label/:status': handler,
|
||||
'/badge/:label/:status/:color': handler
|
||||
}
|
||||
|
||||
module.exports = badgenServe(handlers, { examples })
|
||||
|
|
|
@ -2,26 +2,35 @@ const url = require('url')
|
|||
const PathParser = require('path-parser').default
|
||||
|
||||
const serve404 = require('./serve-404.js')
|
||||
const serveHelp = require('./serve-help.js')
|
||||
const serveBadge = require('./serve-badge.js')
|
||||
|
||||
module.exports = function createHandler (schemes, handler, { help = '', examples = [] }) {
|
||||
const matchers = schemes.map(scheme => new PathParser(scheme))
|
||||
|
||||
module.exports = function createHandler (handlers, { help = '', examples = [] }) {
|
||||
return async function httpHandler (req, res) {
|
||||
const { pathname, query } = url.parse(req.url, true)
|
||||
|
||||
// serve favicon
|
||||
if (pathname === '/favicon.ico') {
|
||||
return serve404(req, res)
|
||||
}
|
||||
|
||||
let matchedArgs
|
||||
matchers.find(m => (matchedArgs = m.test(pathname)))
|
||||
|
||||
if (matchedArgs) {
|
||||
const params = await handler(matchedArgs)
|
||||
return serveBadge(req, res, { params, query })
|
||||
// serve help message
|
||||
if (pathname.startsWith('/help')) {
|
||||
return serveHelp(req, res, help, examples)
|
||||
}
|
||||
|
||||
return serve404(req, res)
|
||||
// Lookup handler
|
||||
let matchedArgs
|
||||
const matchedScheme = Object.keys(handlers).find(scheme => {
|
||||
matchedArgs = new PathParser(scheme).test(pathname)
|
||||
return matchedArgs !== null
|
||||
})
|
||||
|
||||
if (matchedScheme) {
|
||||
const params = await handlers[matchedScheme](matchedArgs)
|
||||
return serveBadge(req, res, { params, query })
|
||||
} else {
|
||||
return serve404(req, res)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
module.exports = async function (req, res, help, examples) {
|
||||
res.end(help)
|
||||
}
|
Ładowanie…
Reference in New Issue