kopia lustrzana https://github.com/badgen/badgen.net
feat: add uptime-robot live-badge
rodzic
2eefaf4e33
commit
013708fc8f
|
|
@ -76,6 +76,11 @@ Available color names:
|
|||
| david-dm dev dependencies |  | [/david/dev/zeit/pkg](/david/dev/zeit/pkg)
|
||||
| david-dm peer dependencies |  | [/david/peer/epoberezkin/ajv-keywords](/david/peer/epoberezkin/ajv-keywords)
|
||||
| david-dm optional dependencies |  | [/david/optional/epoberezkin/ajv-keywords](/david/optional/epoberezkin/ajv-keywords)
|
||||
| uptime robot status |  | [/uptime-robot/status/m780731617-a9e038618dc1aee36a44c4af](/uptime-robot/status/m780731617-a9e038618dc1aee36a44c4af)
|
||||
| uptime robot uptime (day) |  | [/uptime-robot/lasy-day/m780731617-a9e038618dc1aee36a44c4af](/uptime-robot/day/m780731617-a9e038618dc1aee36a44c4af)
|
||||
| uptime robot uptime (week) |  | [/uptime-robot/lasy-week/m780731617-a9e038618dc1aee36a44c4af](/uptime-robot/week/m780731617-a9e038618dc1aee36a44c4af)
|
||||
| uptime robot uptime (month) |  | [/uptime-robot/lasy-month/m780731617-a9e038618dc1aee36a44c4af](/uptime-robot/month/m780731617-a9e038618dc1aee36a44c4af)
|
||||
| uptime robot response (last hour) |  | [/uptime-robot/response/m780731617-a9e038618dc1aee36a44c4af](/uptime-robot/response/m780731617-a9e038618dc1aee36a44c4af)
|
||||
|
||||
## About
|
||||
|
||||
|
|
|
|||
|
|
@ -9,5 +9,6 @@ module.exports = {
|
|||
'github': require('./github.js'),
|
||||
'homebrew': require('./homebrew.js'),
|
||||
'npm': require('./npm.js'),
|
||||
'travis': require('./travis.js')
|
||||
'travis': require('./travis.js'),
|
||||
'uptime-robot': require('./uptime-robot.js')
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,90 @@
|
|||
const axios = require('../axios.js')
|
||||
|
||||
/**
|
||||
* DOCS
|
||||
* https://uptimerobot.com/api
|
||||
*
|
||||
* USAGE
|
||||
* /uptime-robot/_topic_/_api_key_/_monitor_id_/
|
||||
*/
|
||||
|
||||
module.exports = async function (topic, apiKey) {
|
||||
const endpoint = `https://api.uptimerobot.com/v2/getMonitors`
|
||||
const options = {
|
||||
api_key: apiKey,
|
||||
custom_uptime_ratios: '1-7-30',
|
||||
response_times: 1,
|
||||
response_times_limit: 12
|
||||
}
|
||||
const { monitors } = await axios.post(endpoint, options).then(res => res.data)
|
||||
|
||||
/* eslint-disable camelcase */
|
||||
const { status, custom_uptime_ratio, average_response_time } = monitors[0]
|
||||
|
||||
switch (topic) {
|
||||
case 'status':
|
||||
const _stat = statuses[status]
|
||||
return {
|
||||
subject: 'status',
|
||||
status: _stat ? _stat[0] : 'unknown',
|
||||
color: _stat ? _stat[1] : 'grey'
|
||||
}
|
||||
case 'day':
|
||||
return uptime('last-day', custom_uptime_ratio)
|
||||
case 'week':
|
||||
return uptime('last-week', custom_uptime_ratio)
|
||||
case 'month':
|
||||
return uptime('last-month', custom_uptime_ratio)
|
||||
case 'response':
|
||||
return {
|
||||
subject: 'response',
|
||||
status: average_response_time + 'ms',
|
||||
color: 'green'
|
||||
}
|
||||
default:
|
||||
return {
|
||||
subject: 'uptime robot',
|
||||
status: 'unknown topic',
|
||||
color: 'grey'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const statuses = {
|
||||
0: ['paused', 'yellow'],
|
||||
1: ['not checked yet', 'grey'],
|
||||
2: ['up', 'green'],
|
||||
8: ['seems down', 'orange'],
|
||||
9: ['down', 'red']
|
||||
}
|
||||
|
||||
function uptime (period, ratios) {
|
||||
const [day, week, month] = ratios.split('-').map(r => parseFloat(r))
|
||||
switch (period) {
|
||||
case 'last-day':
|
||||
return {
|
||||
subject: 'uptime',
|
||||
status: day + '%',
|
||||
color: ratioColor(day)
|
||||
}
|
||||
case 'last-week':
|
||||
return {
|
||||
subject: 'uptime',
|
||||
status: week + '%',
|
||||
color: ratioColor(week)
|
||||
}
|
||||
case 'last-month':
|
||||
return {
|
||||
subject: 'uptime',
|
||||
status: month + '%',
|
||||
color: ratioColor(month)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function ratioColor (ratio) {
|
||||
if (ratio > 99) return 'green'
|
||||
if (ratio > 95) return 'yellow'
|
||||
if (ratio > 50) return 'orange'
|
||||
return 'red'
|
||||
}
|
||||
Ładowanie…
Reference in New Issue