From 42cec0a8f29aada07a835494b11a8fc98f4f3ef2 Mon Sep 17 00:00:00 2001 From: Ilya Date: Sun, 19 Dec 2021 19:49:22 +0300 Subject: [PATCH] Initial commit --- .gitignore | 4 ++++ .npmignore | 4 ++++ package.json | 16 ++++++++++++++++ src/index.d.ts | 9 +++++++++ src/index.js | 33 +++++++++++++++++++++++++++++++++ 5 files changed, 66 insertions(+) create mode 100644 .gitignore create mode 100644 .npmignore create mode 100644 package.json create mode 100644 src/index.d.ts create mode 100644 src/index.js 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