From 374a33c16deb0ed9681e2bb9ce566869459930c5 Mon Sep 17 00:00:00 2001 From: Amio Date: Sat, 1 Jun 2019 09:50:59 +0800 Subject: [PATCH] Auto switch style on flat.badgen.net --- libs/badgen-serve.ts | 12 ++++++++++++ libs/serve-api.js | 42 ------------------------------------------ libs/serve-api.ts | 9 +++++++++ 3 files changed, 21 insertions(+), 42 deletions(-) delete mode 100644 libs/serve-api.js create mode 100644 libs/serve-api.ts diff --git a/libs/badgen-serve.ts b/libs/badgen-serve.ts index 264edfc..841d5dd 100644 --- a/libs/badgen-serve.ts +++ b/libs/badgen-serve.ts @@ -3,6 +3,7 @@ import url from 'url' import serve404 from './serve-404' import serveBadge from './serve-badge' import matchRoute from './match-route' +// import serveApi from './serve-api' import { BadgenParams } from './types' @@ -34,6 +35,7 @@ export function badgenServe (handlers: BadgenServeHandlers): Function { }) const defaultLabel = pathname.split('/')[1] + if (matchedScheme) { try { const params = await handlers[matchedScheme](matchedArgs) || { @@ -41,6 +43,15 @@ export function badgenServe (handlers: BadgenServeHandlers): Function { status: 'unknown', color: 'grey' } + + // if (req.hostname === 'api.badgen.net') { + // return serveApi(req, res, { params }) + // } + + if (req.hostname === 'flat.badgen.net' && query.style !== undefined) { + query.style = 'flat' + } + return serveBadge(req, res, { params, query }) } catch (error) { // 404 for `got` requests @@ -57,6 +68,7 @@ export function badgenServe (handlers: BadgenServeHandlers): Function { // timeout for `got` requests if (error.code === 'ETIMEDOUT') { + console.error(`ETIMEDOUT ${req.url}`) return serveBadge(req, res, { code: 500, params: { diff --git a/libs/serve-api.js b/libs/serve-api.js deleted file mode 100644 index f33858b..0000000 --- a/libs/serve-api.js +++ /dev/null @@ -1,42 +0,0 @@ -const fs = require('fs') -const path = require('path') -const { send } = require('micro') -const { router, get } = require('micro-fork') -const liveFunctions = require('./live-fns/_index.js') -const liveFetcher = require('./live-fetcher.js') -const serveStats = require('./serve-stats.js') - -const CACHE_CONTROL = `public, max-age=60, stale-while-revalidate=604800, stale-if-error=604800` - -const apiHandlers = Object.entries(liveFunctions).map(([name, fn]) => { - return get(`/${name}/*`, async (req, res) => { - const result = await liveFetcher(name, fn, req.params['*']) - let status = 200 - if (result.failed) { - switch (result.status) { - case 'timeout': - status = 504 - break - case 'not found': - status = 404 - break - default: - status = 500 - } - } - res.setHeader('Cache-Control', `${CACHE_CONTROL}, s-maxage=${result.failed ? '0' : '180'}`) - send(res, status, result) - }) -}) - -const indexContent = fs.readFileSync(path.join(__dirname, 'index-api.md'), 'utf8') -const serveIndex = (req, res) => { - res.setHeader('Cache-Control', 'public, max-age=60, s-maxage=86400') - send(res, 200, indexContent) -} - -module.exports = router()( - get('/', serveIndex), - get('/_stats', serveStats), - ...apiHandlers -) diff --git a/libs/serve-api.ts b/libs/serve-api.ts new file mode 100644 index 0000000..8fecb8c --- /dev/null +++ b/libs/serve-api.ts @@ -0,0 +1,9 @@ +import { send } from 'micro' + +const STALE_CONTROL = 'stale-while-revalidate=604800, stale-if-error=604800' +const CACHE_CONTROL = `public, max-age=20, s-maxage=120, ${STALE_CONTROL}` + +export default async function serveApi (req, res, { params }) { + res.setHeader('Cache-Control', CACHE_CONTROL) + return send(res, 200, params) +}