Endpoint get-issues-queue-size created
This commit is contained in:
parent
7a9b450732
commit
607743b071
5 changed files with 53 additions and 10 deletions
|
|
@ -63,23 +63,27 @@ export class RedmineEventsGateway {
|
|||
}
|
||||
|
||||
addIssues(issues: number[]): void {
|
||||
issues.forEach(issue => {
|
||||
issues.forEach((issue) => {
|
||||
if (!this.issuesChangesQueue.isItemExists(issue)) {
|
||||
this.issuesChangesQueue.add([issue]);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
getQueueSize(): number {
|
||||
return this.issuesChangesQueue.getQueueSize();
|
||||
}
|
||||
|
||||
private sendWebHookFullDataEvents(data: RedmineIssueData[]): void {
|
||||
const webhooks = this.config.get<WebhookConfigItemModel[]>("webhooks");
|
||||
webhooks.forEach(webhook => {
|
||||
const webhooks = this.config.get<WebhookConfigItemModel[]>('webhooks');
|
||||
webhooks.forEach((webhook) => {
|
||||
let config = undefined;
|
||||
if (webhook.apiKeyName && webhook.apiKeyValue) {
|
||||
config = {headers: {}};
|
||||
config = { headers: {} };
|
||||
config.headers[webhook.apiKeyName] = webhook.apiKeyValue;
|
||||
}
|
||||
axios.post(webhook.url, data, config).catch((err) => {
|
||||
console.error('Error at webhook send request:', err)
|
||||
console.error('Error at webhook send request:', err);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,4 +16,9 @@ export class MainController {
|
|||
async appendIssues(@Body() issues: number[]): Promise<void> {
|
||||
this.redmineEventsGateway.addIssues(issues);
|
||||
}
|
||||
|
||||
@Get('get-issues-queue-size')
|
||||
getIssuesQueueSize(): number {
|
||||
return this.redmineEventsGateway.getQueueSize();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
import { Subject } from "rxjs";
|
||||
import { Subject } from 'rxjs';
|
||||
|
||||
export class Queue<T, NT> {
|
||||
|
||||
private items: T[] = [];
|
||||
|
||||
queue: Subject<NT[]> = new Subject<NT[]>();
|
||||
|
|
@ -9,7 +8,7 @@ export class Queue<T, NT> {
|
|||
constructor(
|
||||
private updateInterval: number,
|
||||
private itemsLimit: number,
|
||||
private transformationFn: ((arg: Array<T>) => Promise<Array<NT>>)
|
||||
private transformationFn: (arg: Array<T>) => Promise<Array<NT>>,
|
||||
) {}
|
||||
|
||||
add(values: T[]): void {
|
||||
|
|
@ -29,6 +28,10 @@ export class Queue<T, NT> {
|
|||
this.updateTimeout = null;
|
||||
}
|
||||
|
||||
getQueueSize(): number {
|
||||
return this.items.length;
|
||||
}
|
||||
|
||||
private updateTimeout;
|
||||
|
||||
private async update(): Promise<void> {
|
||||
|
|
@ -41,5 +44,4 @@ export class Queue<T, NT> {
|
|||
this.update();
|
||||
}, this.updateInterval);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
"imap-simple": "^5.1.0",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"rss-parser": "^3.12.0",
|
||||
"rxjs": "^7.2.0",
|
||||
"socket.io": "^4.4.1"
|
||||
},
|
||||
|
|
|
|||
31
yarn.lock
31
yarn.lock
|
|
@ -2081,6 +2081,11 @@ enhanced-resolve@^5.0.0, enhanced-resolve@^5.7.0, enhanced-resolve@^5.9.2:
|
|||
graceful-fs "^4.2.4"
|
||||
tapable "^2.2.0"
|
||||
|
||||
entities@^2.0.3:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
|
||||
integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
|
||||
|
||||
error-ex@^1.3.1:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
|
||||
|
|
@ -4252,6 +4257,14 @@ rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2:
|
|||
dependencies:
|
||||
glob "^7.1.3"
|
||||
|
||||
rss-parser@^3.12.0:
|
||||
version "3.12.0"
|
||||
resolved "https://registry.yarnpkg.com/rss-parser/-/rss-parser-3.12.0.tgz#b8888699ea46304a74363fbd8144671b2997984c"
|
||||
integrity sha512-aqD3E8iavcCdkhVxNDIdg1nkBI17jgqF+9OqPS1orwNaOgySdpvq6B+DoONLhzjzwV8mWg37sb60e4bmLK117A==
|
||||
dependencies:
|
||||
entities "^2.0.3"
|
||||
xml2js "^0.4.19"
|
||||
|
||||
run-async@^2.4.0:
|
||||
version "2.4.1"
|
||||
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
|
||||
|
|
@ -4293,6 +4306,11 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1:
|
|||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
|
||||
sax@>=0.6.0:
|
||||
version "1.2.4"
|
||||
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
|
||||
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
|
||||
|
||||
saxes@^5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d"
|
||||
|
|
@ -5147,6 +5165,19 @@ xml-name-validator@^3.0.0:
|
|||
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
|
||||
integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
|
||||
|
||||
xml2js@^0.4.19:
|
||||
version "0.4.23"
|
||||
resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66"
|
||||
integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==
|
||||
dependencies:
|
||||
sax ">=0.6.0"
|
||||
xmlbuilder "~11.0.0"
|
||||
|
||||
xmlbuilder@~11.0.0:
|
||||
version "11.0.1"
|
||||
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3"
|
||||
integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==
|
||||
|
||||
xmlchars@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
|
||||
|
|
|
|||
Loading…
Reference in a new issue