diff --git a/package.json b/package.json index 23d7cf3..1e7e38c 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/src/index.d.ts b/src/index.d.ts index a4b49e9..a033a2a 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -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 + }] + }] + }]>; } diff --git a/src/index.js b/src/index.js index b607687..5947c67 100644 --- a/src/index.js +++ b/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; + } } \ No newline at end of file