const micro = require('micro') const { router, get } = require('micro-fork') const serveFavicon = require('./libs/serve-favicon.js') const serveIndex = require('./libs/serve-index.js') const serve404 = require('./libs/serve-404.js') const serveDocs = require('./libs/serve-docs.js') const serveBadge = require('./libs/serve-badge.js') const liveHandlers = require('./libs/live-handlers.js') const serveApi = require('./libs/serve-api.js') const homeHandler = (req, res) => { if (req.headers.host === 'badgen.now.sh') { res.setHeader('Location', 'https://badgen.net') micro.send(res, 301) } else { serveIndex(req, res) } } const main = router()( get('/*', serve404), get('/', homeHandler), get('/docs/:topic', serveDocs), get('/favicon.ico', serveFavicon), get('/favicon.svg', serveFavicon), get('/badge/:subject/:status', (req, res) => serveBadge(req, res)), get('/badge/:subject/:status/:color', (req, res) => serveBadge(req, res)), ...liveHandlers ) module.exports = function (req, res) { switch (req.headers.host) { case 'api.badgen.net': case '127.0.0.1:3000': return serveApi(req, res) default: return main(req, res) } } if (require.main === module) { micro(module.exports).listen(3000) }