From ffc2737478c6f9efd5de9fbaf526b13164727f87 Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Sat, 7 Dec 2024 10:22:45 -0500 Subject: implement SkRateLimiterService with Leaky Bucket rate limiting --- packages/backend/src/server/api/RateLimiterService.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'packages/backend/src/server/api/RateLimiterService.ts') diff --git a/packages/backend/src/server/api/RateLimiterService.ts b/packages/backend/src/server/api/RateLimiterService.ts index e9afb9d05a..33db016a7c 100644 --- a/packages/backend/src/server/api/RateLimiterService.ts +++ b/packages/backend/src/server/api/RateLimiterService.ts @@ -10,28 +10,28 @@ import { DI } from '@/di-symbols.js'; import type Logger from '@/logger.js'; import { LoggerService } from '@/core/LoggerService.js'; import { bindThis } from '@/decorators.js'; +import type { LimitInfo } from '@/server/api/SkRateLimiterService.js'; +import { EnvService } from '@/core/EnvService.js'; import type { IEndpointMeta } from './endpoints.js'; @Injectable() export class RateLimiterService { - private logger: Logger; - private disabled = false; + protected readonly logger: Logger; + protected readonly disabled: boolean; constructor( @Inject(DI.redis) - private redisClient: Redis.Redis, + protected readonly redisClient: Redis.Redis, private loggerService: LoggerService, + envService: EnvService, ) { this.logger = this.loggerService.getLogger('limiter'); - - if (process.env.NODE_ENV !== 'production') { - this.disabled = true; - } + this.disabled = envService.env.NODE_ENV !== 'production'; } @bindThis - public limit(limitation: IEndpointMeta['limit'] & { key: NonNullable }, actor: string, factor = 1) { + public limit(limitation: IEndpointMeta['limit'] & { key: NonNullable }, actor: string, factor = 1): Promise { return new Promise((ok, reject) => { if (this.disabled) ok(); -- cgit v1.2.3-freya