Implemented max twilio messages per day and fixed slider decimal places.
This commit is contained in:
1
dist/Configuration/DefaultConfiguration.js
vendored
1
dist/Configuration/DefaultConfiguration.js
vendored
@@ -31,6 +31,7 @@ exports.DefaultConfiguration = {
|
||||
fromNumber: '',
|
||||
toNumbers: [],
|
||||
aggregateTimeout: 15000,
|
||||
maxMessagesPerDay: 10,
|
||||
},
|
||||
support: {
|
||||
telephone: '+31613392837',
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"DefaultConfiguration.js","sourceRoot":"","sources":["../../src/Configuration/DefaultConfiguration.ts"],"names":[],"mappings":";;;AAEa,QAAA,oBAAoB,GAAW;IAC3C,SAAS,EAAE;QACV,IAAI,EAAE,IAAI;KACV;IACD,KAAK,EAAE;QACN,UAAU,EAAE;YACX,IAAI,EAAE,EAAE;YACR,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,IAAI;SAClB;QAED,SAAS,EAAE;YACV,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,IAAI;SACV;QAED,iBAAiB,EAAE,IAAI;QACvB,wBAAwB,EAAE,IAAI;KAC9B;IACD,YAAY,EAAE;QACb,SAAS,EAAE;YACV,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,IAAI;SACV;QAED,YAAY,EAAE,IAAI;KAClB;IACD,MAAM,EAAE;QACP,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;QACb,gBAAgB,EAAE,KAAK;KACvB;IACD,OAAO,EAAE;QACR,SAAS,EAAE,cAAc;KACzB;CACD,CAAC"}
|
||||
{"version":3,"file":"DefaultConfiguration.js","sourceRoot":"","sources":["../../src/Configuration/DefaultConfiguration.ts"],"names":[],"mappings":";;;AAEa,QAAA,oBAAoB,GAAW;IAC3C,SAAS,EAAE;QACV,IAAI,EAAE,IAAI;KACV;IACD,KAAK,EAAE;QACN,UAAU,EAAE;YACX,IAAI,EAAE,EAAE;YACR,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,IAAI;SAClB;QAED,SAAS,EAAE;YACV,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,IAAI;SACV;QAED,iBAAiB,EAAE,IAAI;QACvB,wBAAwB,EAAE,IAAI;KAC9B;IACD,YAAY,EAAE;QACb,SAAS,EAAE;YACV,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,IAAI;SACV;QAED,YAAY,EAAE,IAAI;KAClB;IACD,MAAM,EAAE;QACP,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;QACb,gBAAgB,EAAE,KAAK;QACvB,iBAAiB,EAAE,EAAE;KACrB;IACD,OAAO,EAAE;QACR,SAAS,EAAE,cAAc;KACzB;CACD,CAAC"}
|
||||
62
dist/Twilio.js
vendored
62
dist/Twilio.js
vendored
@@ -37,15 +37,65 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.TwilioHandler = void 0;
|
||||
var path_1 = require("path");
|
||||
var fs_extra_1 = require("fs-extra");
|
||||
var PREFIX = '[Twilio]';
|
||||
var TwilioHandler = /** @class */ (function () {
|
||||
function TwilioHandler(Main) {
|
||||
this.counter = {
|
||||
date: new Date().toLocaleDateString('nl-NL'),
|
||||
count: 0,
|
||||
};
|
||||
this.lastErrors = new Map();
|
||||
this.errorLog = [];
|
||||
this._Main = Main;
|
||||
}
|
||||
TwilioHandler.prototype.canSendMessage = function () {
|
||||
var maxMessages = this._Main.Config.twilio.maxMessagesPerDay;
|
||||
return this.counter.count < maxMessages;
|
||||
};
|
||||
TwilioHandler.prototype.incrementCounter = function () {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var today;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
today = new Date().toLocaleDateString('nl-NL');
|
||||
if (this.counter.date !== today) {
|
||||
this.counter.date = today;
|
||||
this.counter.count = 0;
|
||||
}
|
||||
this.counter.count++;
|
||||
return [4 /*yield*/, (0, fs_extra_1.writeJSON)((0, path_1.join)(this._Main.dataPath, 'twilio.json'), this.counter)];
|
||||
case 1:
|
||||
_a.sent();
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
TwilioHandler.prototype.load = function () {
|
||||
this.client = require('twilio')(this._Main.Config.twilio.accountSid, this._Main.Config.twilio.authToken);
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var twilioConfigPath, twilioConfigExists, _a;
|
||||
return __generator(this, function (_b) {
|
||||
switch (_b.label) {
|
||||
case 0:
|
||||
twilioConfigPath = (0, path_1.join)(this._Main.dataPath, 'twilio.json');
|
||||
return [4 /*yield*/, (0, fs_extra_1.pathExists)(twilioConfigPath)];
|
||||
case 1:
|
||||
twilioConfigExists = _b.sent();
|
||||
if (!twilioConfigExists) return [3 /*break*/, 3];
|
||||
_a = this;
|
||||
return [4 /*yield*/, (0, fs_extra_1.readJSON)(twilioConfigPath)];
|
||||
case 2:
|
||||
_a.counter = _b.sent();
|
||||
_b.label = 3;
|
||||
case 3:
|
||||
this.client = require('twilio')(this._Main.Config.twilio.accountSid, this._Main.Config.twilio.authToken);
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
TwilioHandler.prototype.resetError = function (category) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
@@ -78,21 +128,27 @@ var TwilioHandler = /** @class */ (function () {
|
||||
.map(function (error) { return "- ".concat(error); })
|
||||
.join('\n');
|
||||
this.errorLog = [];
|
||||
if (!this.canSendMessage())
|
||||
return [2 /*return*/, console.log(PREFIX, 'Max messages per day reached')];
|
||||
return [4 /*yield*/, this.incrementCounter()];
|
||||
case 1:
|
||||
_a.sent();
|
||||
console.log(PREFIX, "Sending to Twilio:\n", errorMessage);
|
||||
promises = this._Main.Config.twilio.toNumbers.map(function (toNumber) { return _this.sendMessage(toNumber, errorMessage); });
|
||||
return [4 /*yield*/, Promise.all(promises)];
|
||||
case 1:
|
||||
case 2:
|
||||
_a.sent();
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
}); }, 15000);
|
||||
}); }, this._Main.Config.twilio.aggregateTimeout);
|
||||
return [2 /*return*/];
|
||||
});
|
||||
});
|
||||
};
|
||||
TwilioHandler.prototype.sendMessage = function (to, message) {
|
||||
var _this = this;
|
||||
return;
|
||||
return new Promise(function (resolve) {
|
||||
_this.client.messages
|
||||
.create({
|
||||
|
||||
2
dist/Twilio.js.map
vendored
2
dist/Twilio.js.map
vendored
@@ -1 +1 @@
|
||||
{"version":3,"file":"Twilio.js","sourceRoot":"","sources":["../src/Twilio.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"Twilio.js","sourceRoot":"","sources":["../src/Twilio.ts"],"names":[],"mappings":"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"}
|
||||
@@ -141,6 +141,7 @@ export interface ConfigTwilio {
|
||||
fromNumber: string;
|
||||
toNumbers: string[];
|
||||
aggregateTimeout: number;
|
||||
maxMessagesPerDay: number;
|
||||
}
|
||||
|
||||
export interface ConfigSupport {
|
||||
|
||||
@@ -33,6 +33,7 @@ export const DefaultConfiguration: Config = {
|
||||
fromNumber: '',
|
||||
toNumbers: [],
|
||||
aggregateTimeout: 15000,
|
||||
maxMessagesPerDay: 10,
|
||||
},
|
||||
support: {
|
||||
telephone: '+31613392837',
|
||||
|
||||
@@ -1,16 +1,47 @@
|
||||
import { join } from 'path';
|
||||
import { Main } from './Main';
|
||||
import { pathExists, readJSON, writeJSON } from 'fs-extra';
|
||||
|
||||
const PREFIX = '[Twilio]';
|
||||
export class TwilioHandler {
|
||||
private _Main: Main;
|
||||
|
||||
counter: {
|
||||
date: string;
|
||||
count: number;
|
||||
} = {
|
||||
date: new Date().toLocaleDateString('nl-NL'),
|
||||
count: 0,
|
||||
};
|
||||
|
||||
client;
|
||||
|
||||
constructor(Main: Main) {
|
||||
this._Main = Main;
|
||||
}
|
||||
|
||||
load() {
|
||||
canSendMessage() {
|
||||
const maxMessages = this._Main.Config.twilio.maxMessagesPerDay;
|
||||
return this.counter.count < maxMessages;
|
||||
}
|
||||
|
||||
async incrementCounter() {
|
||||
const today = new Date().toLocaleDateString('nl-NL');
|
||||
if (this.counter.date !== today) {
|
||||
this.counter.date = today;
|
||||
this.counter.count = 0;
|
||||
}
|
||||
this.counter.count++;
|
||||
await writeJSON(join(this._Main.dataPath, 'twilio.json'), this.counter);
|
||||
}
|
||||
|
||||
async load() {
|
||||
const twilioConfigPath = join(this._Main.dataPath, 'twilio.json');
|
||||
const twilioConfigExists = await pathExists(twilioConfigPath);
|
||||
if (twilioConfigExists) {
|
||||
this.counter = await readJSON(twilioConfigPath);
|
||||
}
|
||||
|
||||
this.client = require('twilio')(
|
||||
this._Main.Config.twilio.accountSid,
|
||||
this._Main.Config.twilio.authToken
|
||||
@@ -39,16 +70,21 @@ export class TwilioHandler {
|
||||
.join('\n');
|
||||
this.errorLog = [];
|
||||
|
||||
if (!this.canSendMessage())
|
||||
return console.log(PREFIX, 'Max messages per day reached');
|
||||
await this.incrementCounter();
|
||||
|
||||
console.log(PREFIX, `Sending to Twilio:\n`, errorMessage);
|
||||
|
||||
const promises = this._Main.Config.twilio.toNumbers.map(
|
||||
(toNumber) => this.sendMessage(toNumber, errorMessage)
|
||||
);
|
||||
await Promise.all(promises);
|
||||
}, 15000);
|
||||
}, this._Main.Config.twilio.aggregateTimeout);
|
||||
}
|
||||
|
||||
sendMessage(to: string, message: string) {
|
||||
return;
|
||||
return new Promise<boolean>((resolve) => {
|
||||
this.client.messages
|
||||
.create({
|
||||
|
||||
Reference in New Issue
Block a user