Add method to get statuses and change pushing args
This commit is contained in:
parent
42cec0a8f2
commit
4b0d21e494
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "uptimekuma-api",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.1",
|
||||
"description": "",
|
||||
"main": "src/index.js",
|
||||
"types": "src/index.d.ts",
|
||||
|
|
21
src/index.d.ts
vendored
21
src/index.d.ts
vendored
|
@ -1,9 +1,26 @@
|
|||
export default class UptimeKumaApi {
|
||||
constructor();
|
||||
constructor(baseURL: string);
|
||||
|
||||
startPushing(code: string, interval?: number);
|
||||
|
||||
startPushing(url:string, interval?:number);
|
||||
cancelPushing();
|
||||
|
||||
on(event: "pushSuccessful", handle: (url: string) => void);
|
||||
on(event: "pushFailed", handle: (url: string, err: Error) => void);
|
||||
|
||||
status(): Promise<[{
|
||||
id: number,
|
||||
name: string,
|
||||
weight: number, monitors: [{
|
||||
id: number,
|
||||
name: string,
|
||||
uptime: number,
|
||||
heartbeats: [{
|
||||
status: number,
|
||||
time: string,
|
||||
msg: string,
|
||||
ping: number
|
||||
}]
|
||||
}]
|
||||
}]>;
|
||||
}
|
||||
|
|
35
src/index.js
35
src/index.js
|
@ -4,9 +4,11 @@ const EventEmitter = require("events");
|
|||
module.exports = class UptimeKumaApi extends EventEmitter {
|
||||
|
||||
_pushTimer;
|
||||
_baseURL;
|
||||
|
||||
constructor() {
|
||||
constructor(baseURL = "") {
|
||||
super();
|
||||
this._baseURL = baseURL.endsWith("/") ? baseURL : baseURL + "/";
|
||||
}
|
||||
|
||||
push(url) {
|
||||
|
@ -17,17 +19,36 @@ module.exports = class UptimeKumaApi extends EventEmitter {
|
|||
});
|
||||
}
|
||||
|
||||
startPushing(url, interval=60) {
|
||||
if(this._pushTimer)
|
||||
startPushing(code, interval = 60) {
|
||||
if (this._pushTimer)
|
||||
this._pushTimer.cancel();
|
||||
this._pushTimer = setInterval(() => {
|
||||
this.push(url);
|
||||
}, interval*1000);
|
||||
this.push(url);
|
||||
this.push(this.baseURL+"api/push/"+code);
|
||||
}, interval * 1000);
|
||||
this.push(this.baseURL+"api/push/"+code);
|
||||
}
|
||||
|
||||
cancelPushing() {
|
||||
if(this._pushTimer)
|
||||
if (this._pushTimer)
|
||||
this._pushTimer.cancel();
|
||||
}
|
||||
|
||||
async status() {
|
||||
let resp = await client.get(this._baseURL + "api/status-page/monitor-list");
|
||||
let heartBeats = (await client.get(this._baseURL + "api/status-page/heartbeat")).data;
|
||||
let result = [];
|
||||
for (let srcCategory of resp.data) {
|
||||
let targetCategory = {id: srcCategory.id, name: srcCategory.name, weight: srcCategory.weight, monitors: []};
|
||||
for (let srcMonitor of srcCategory.monitorList) {
|
||||
targetCategory.monitors.push({
|
||||
id: srcMonitor.id,
|
||||
name: srcMonitor.name,
|
||||
uptime: heartBeats.uptimeList[srcMonitor.id + "_24"],
|
||||
heartbeats: heartBeats.heartbeatList[srcMonitor.id]
|
||||
});
|
||||
}
|
||||
result.push(targetCategory);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue