summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/stream/channels/queue-stats.ts
diff options
context:
space:
mode:
authoranatawa12 <anatawa12@icloud.com>2024-07-18 20:04:23 +0900
committerGitHub <noreply@github.com>2024-07-18 20:04:23 +0900
commit10ce7bf3c45c3e09dc86f1b9c3a0d7e79c23f5ee (patch)
treec098b60b4fee0030c4f6502c92035672f3fda44f /packages/backend/src/server/api/stream/channels/queue-stats.ts
parentfix(frontend): 子メニューの最大長調整が行われていない問... (diff)
downloadsharkey-10ce7bf3c45c3e09dc86f1b9c3a0d7e79c23f5ee.tar.gz
sharkey-10ce7bf3c45c3e09dc86f1b9c3a0d7e79c23f5ee.tar.bz2
sharkey-10ce7bf3c45c3e09dc86f1b9c3a0d7e79c23f5ee.zip
kill any from streaming API Implementation (#14251)
* chore: add JsonValue type * refactor: kill any from Connection.ts * refactor: fix StreamEventEmitter contains undefined instead of null * refactor: kill any from channels * docs(changelog): Fix: Steaming APIが不正なデータを受けた場合の動作が不安定である問題 * fix license header * fix lints
Diffstat (limited to 'packages/backend/src/server/api/stream/channels/queue-stats.ts')
-rw-r--r--packages/backend/src/server/api/stream/channels/queue-stats.ts10
1 files changed, 7 insertions, 3 deletions
diff --git a/packages/backend/src/server/api/stream/channels/queue-stats.ts b/packages/backend/src/server/api/stream/channels/queue-stats.ts
index 061aa76904..ff7e740226 100644
--- a/packages/backend/src/server/api/stream/channels/queue-stats.ts
+++ b/packages/backend/src/server/api/stream/channels/queue-stats.ts
@@ -6,6 +6,7 @@
import Xev from 'xev';
import { Injectable } from '@nestjs/common';
import { bindThis } from '@/decorators.js';
+import type { JsonObject, JsonValue } from '@/misc/json-value.js';
import Channel, { type MiChannelService } from '../channel.js';
const ev = new Xev();
@@ -22,19 +23,22 @@ class QueueStatsChannel extends Channel {
}
@bindThis
- public async init(params: any) {
+ public async init(params: JsonObject) {
ev.addListener('queueStats', this.onStats);
}
@bindThis
- private onStats(stats: any) {
+ private onStats(stats: JsonObject) {
this.send('stats', stats);
}
@bindThis
- public onMessage(type: string, body: any) {
+ public onMessage(type: string, body: JsonValue) {
switch (type) {
case 'requestLog':
+ if (typeof body !== 'object' || body === null || Array.isArray(body)) return;
+ if (typeof body.id !== 'string') return;
+ if (typeof body.length !== 'number') return;
ev.once(`queueStatsLog:${body.id}`, statsLog => {
this.send('statsLog', statsLog);
});