commit 42cec0a8f29aada07a835494b11a8fc98f4f3ef2 Author: Ilya Date: Sun Dec 19 19:49:22 2021 +0300 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..334384f --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules +test +package-lock.json +.idea \ No newline at end of file diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..8d6ce72 --- /dev/null +++ b/.npmignore @@ -0,0 +1,4 @@ +.idea +.git +node_modules +test \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..23d7cf3 --- /dev/null +++ b/package.json @@ -0,0 +1,16 @@ +{ + "name": "uptimekuma-api", + "version": "1.0.0", + "description": "", + "main": "src/index.js", + "types": "src/index.d.ts", + "scripts": { + "test": "node test/test.js" + }, + "keywords": ["uptime","kuma"], + "author": "RedGuys", + "license": "MIT", + "dependencies": { + "axios": "^0.21.1" + } +} diff --git a/src/index.d.ts b/src/index.d.ts new file mode 100644 index 0000000..a4b49e9 --- /dev/null +++ b/src/index.d.ts @@ -0,0 +1,9 @@ +export default class UptimeKumaApi { + constructor(); + + startPushing(url:string, interval?:number); + cancelPushing(); + + on(event: "pushSuccessful", handle: (url: string) => void); + on(event: "pushFailed", handle: (url: string, err: Error) => void); +} diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..b607687 --- /dev/null +++ b/src/index.js @@ -0,0 +1,33 @@ +const client = require("axios").default; +const EventEmitter = require("events"); + +module.exports = class UptimeKumaApi extends EventEmitter { + + _pushTimer; + + constructor() { + super(); + } + + push(url) { + client.get(url).then(res => { + this.emit("pushSuccessful", url); + }).catch(err => { + this.emit("pushFailed", url, err); + }); + } + + startPushing(url, interval=60) { + if(this._pushTimer) + this._pushTimer.cancel(); + this._pushTimer = setInterval(() => { + this.push(url); + }, interval*1000); + this.push(url); + } + + cancelPushing() { + if(this._pushTimer) + this._pushTimer.cancel(); + } +} \ No newline at end of file