kopia lustrzana https://github.com/badgen/badgen.net
Auto switch style on flat.badgen.net
rodzic
b1e4c3908e
commit
374a33c16d
|
@ -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: {
|
||||
|
|
|
@ -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
|
||||
)
|
|
@ -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)
|
||||
}
|
Ładowanie…
Reference in New Issue