diff --git a/libs/live-handlers.js b/libs/live-handlers.js index 2e165c1..ea7c28d 100644 --- a/libs/live-handlers.js +++ b/libs/live-handlers.js @@ -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() }) })