diff --git a/libs/lru-cache.js b/libs/lru-cache.js new file mode 100644 index 0000000..088e0d2 --- /dev/null +++ b/libs/lru-cache.js @@ -0,0 +1,23 @@ +const LRU = require('lru-cache') + +const cache = new LRU({ max: 1000 }) + +function cleanCache (req, res) { + const count = cache.length + const keys = cache.keys().join('\n') + cache.reset() + + res.writeHead(200) + res.end(`Cleaned ${count}\n${keys}`) +} + +function listCache (req, res) { + res.writeHead(200) + res.end(`Total ${cache.length}\n${cache.keys().join('\n')}`) +} + +module.exports = { + cache, + listCache, + cleanCache +} diff --git a/libs/handlers.js b/libs/serve-badge.js similarity index 56% rename from libs/handlers.js rename to libs/serve-badge.js index 501e7ed..65be650 100644 --- a/libs/handlers.js +++ b/libs/serve-badge.js @@ -1,7 +1,5 @@ const badgen = require('badgen') -const LRU = require('lru-cache') - -const cache = new LRU({ max: 1000 }) +const { cache } = require('./lru-cache.js') function serveBadge (req, res, params) { const result = cache.get(req.url) || badgen(params) @@ -20,23 +18,7 @@ function serveListBadge (req, res, params) { serveBadge(req, res, { subject, status: status.replace(/,/g, ' | '), color }) } -function cleanCache (req, res) { - const count = cache.length - const keys = cache.keys().join('\n') - cache.reset() - - res.writeHead(200) - res.end(`Cleaned ${count}\n${keys}`) -} - -function listCache (req, res) { - res.writeHead(200) - res.end(`Total ${cache.length}\n${cache.keys().join('\n')}`) -} - module.exports = { serveBadge, - serveListBadge, - cleanCache, - listCache + serveListBadge } diff --git a/service.js b/service.js index 5ef4aab..0b46a1c 100644 --- a/service.js +++ b/service.js @@ -1,16 +1,17 @@ const http = require('http') const cors = require('@amio/micro-cors')() const router = require('find-my-way')() -const handlers = require('./libs/handlers.js') const serveIndex = require('./libs/serve-index.js') +const { serveBadge, serveListBadge } = require('./libs/serve-badge.js') +const { listCache, cleanCache } = require('./libs/lru-cache.js') -router.get('/badge/:subject/:status', handlers.serveBadge) -router.get('/badge/:subject/:status/:color', handlers.serveBadge) -router.get('/list/:subject/:status', handlers.serveListBadge) -router.get('/list/:subject/:status/:color', handlers.serveListBadge) +router.get('/badge/:subject/:status', serveBadge) +router.get('/badge/:subject/:status/:color', serveBadge) +router.get('/list/:subject/:status', serveListBadge) +router.get('/list/:subject/:status/:color', serveListBadge) -router.get('/clean-cache', handlers.cleanCache) -router.get('/list-cache', handlers.listCache) +router.get('/clean-cache', cleanCache) +router.get('/list-cache', listCache) router.get('/', serveIndex)