|
|
@ -5,6 +5,17 @@ const serveBadge = require('./serve-badge.js') |
|
|
|
const liveFetcher = require('./live-fetcher.js') |
|
|
|
|
|
|
|
const { API_HOST } = process.env |
|
|
|
const apiFetcher = async url => { |
|
|
|
return axios.get(API_HOST + url, { |
|
|
|
validateStatus: status => status >= 200 && status < 300 |
|
|
|
}).then( |
|
|
|
res => res.data, |
|
|
|
err => { |
|
|
|
console.error('API_ERR', url, err.message) |
|
|
|
return { ...err.response.data, statusCode: err.response.status } |
|
|
|
} |
|
|
|
) |
|
|
|
} |
|
|
|
|
|
|
|
module.exports = Object.entries(liveFns).map(([name, fn]) => { |
|
|
|
return get(`/${name}/*`, async (req, res) => { |
|
|
@ -12,15 +23,18 @@ module.exports = Object.entries(liveFns).map(([name, fn]) => { |
|
|
|
subject = name, |
|
|
|
status = 'unknown', |
|
|
|
color = 'grey', |
|
|
|
failed = false |
|
|
|
} = await (API_HOST |
|
|
|
? axios(API_HOST + req.url).then(res => res.data) |
|
|
|
: liveFetcher(name, fn, req.params['*']) |
|
|
|
failed = false, |
|
|
|
statusCode = 200 |
|
|
|
} = await ( |
|
|
|
API_HOST |
|
|
|
? apiFetcher(req.url) |
|
|
|
: liveFetcher(name, fn, req.params['*']) |
|
|
|
) |
|
|
|
|
|
|
|
const style = req.headers.host === 'flat.badgen.net' ? 'flat' : undefined |
|
|
|
req.params = { subject, status, color, style } |
|
|
|
serveBadge(req, res, { |
|
|
|
code: statusCode, |
|
|
|
maxAge: failed ? '0' : (Math.random() * 60 + 60).toFixed() |
|
|
|
}) |
|
|
|
}) |
|
|
|