badgen/service.js

41 wiersze
1.1 KiB
JavaScript
Czysty Zwykły widok Historia

2018-05-29 08:53:54 +00:00
const http = require('http')
2018-06-01 07:22:41 +00:00
const cors = require('@amio/micro-cors')()
2018-05-29 08:53:54 +00:00
const router = require('find-my-way')()
2018-06-22 16:06:22 +00:00
const badgen = require('./lib/index')
2018-06-23 08:29:48 +00:00
const LRU = require('lru-cache')
2018-05-29 08:53:54 +00:00
2018-06-23 08:29:48 +00:00
const cache = new LRU({ max: 1000 })
2018-05-29 08:53:54 +00:00
2018-06-22 16:04:30 +00:00
function serveBadge (req, res, params) {
2018-05-29 08:53:54 +00:00
res.writeHead(200, { 'Content-Type': 'image/svg+xml;charset=utf-8' })
2018-06-23 08:29:48 +00:00
const cached = cache.get(req.url)
if (cached) {
res.end(cached)
} else {
const created = badgen(params)
cache.set(req.url, created)
res.end(created)
}
2018-05-30 02:44:04 +00:00
}
2018-06-23 08:51:51 +00:00
function serveListBadge (req, res, params) {
const { subject, status, color } = params
serveBadge(req, res, { subject, status: status.replace(/,/g, ' | '), color })
2018-05-30 02:44:04 +00:00
}
function redirect (req, res) {
res.writeHead(302, { 'Location': 'https://amio.github.io/badgen' })
res.end()
2018-05-30 03:13:32 +00:00
}
2018-06-22 16:04:30 +00:00
router.get('/badge/:subject/:status', serveBadge)
router.get('/badge/:subject/:status/:color', serveBadge)
2018-06-23 08:51:51 +00:00
router.get('/list/:subject/:status', serveListBadge)
router.get('/list/:subject/:status/:color', serveListBadge)
router.get('/', redirect)
2018-05-29 08:53:54 +00:00
2018-06-01 07:22:41 +00:00
const handler = cors((req, res) => router.lookup(req, res))
const server = http.createServer(handler)
2018-05-29 08:53:54 +00:00
server.listen(3000)