Browse Source

fix: stronger live-handler #102

refactor-github
Amio 6 years ago
parent
commit
3ae4adb34a
  1. 22
      libs/live-handlers.js

22
libs/live-handlers.js

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

Loading…
Cancel
Save