diff options
| author | dakkar <dakkar@thenautilus.net> | 2024-12-08 20:49:07 +0000 |
|---|---|---|
| committer | dakkar <dakkar@thenautilus.net> | 2024-12-08 20:49:07 +0000 |
| commit | 92ffd2a5fc7dc063d85f1a052e0ffff31b74fea9 (patch) | |
| tree | 79f0848608b35117cca373f2dcc26f6aba5dc894 /packages/backend/src/core | |
| parent | merge: Data driven about page sections (and add me as a contributor!) (!800) (diff) | |
| parent | fix type errors from new rate limit definitions (diff) | |
| download | sharkey-92ffd2a5fc7dc063d85f1a052e0ffff31b74fea9.tar.gz sharkey-92ffd2a5fc7dc063d85f1a052e0ffff31b74fea9.tar.bz2 sharkey-92ffd2a5fc7dc063d85f1a052e0ffff31b74fea9.zip | |
merge: Implement new SkRateLimiterServer with Leaky Bucket rate limits (resolves #592) (!799)
View MR for information: https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/799
Closes #592
Approved-by: dakkar <dakkar@thenautilus.net>
Approved-by: Marie <github@yuugi.dev>
Diffstat (limited to 'packages/backend/src/core')
| -rw-r--r-- | packages/backend/src/core/CoreModule.ts | 6 | ||||
| -rw-r--r-- | packages/backend/src/core/EnvService.ts | 20 | ||||
| -rw-r--r-- | packages/backend/src/core/TimeService.ts | 27 |
3 files changed, 53 insertions, 0 deletions
diff --git a/packages/backend/src/core/CoreModule.ts b/packages/backend/src/core/CoreModule.ts index c083068392..b18db7f366 100644 --- a/packages/backend/src/core/CoreModule.ts +++ b/packages/backend/src/core/CoreModule.ts @@ -14,6 +14,8 @@ import { AbuseReportNotificationService } from '@/core/AbuseReportNotificationSe import { SystemWebhookService } from '@/core/SystemWebhookService.js'; import { UserSearchService } from '@/core/UserSearchService.js'; import { WebhookTestService } from '@/core/WebhookTestService.js'; +import { TimeService } from '@/core/TimeService.js'; +import { EnvService } from '@/core/EnvService.js'; import { AccountMoveService } from './AccountMoveService.js'; import { AccountUpdateService } from './AccountUpdateService.js'; import { AnnouncementService } from './AnnouncementService.js'; @@ -381,6 +383,8 @@ const $SponsorsService: Provider = { provide: 'SponsorsService', useExisting: Sp ChannelFollowingService, RegistryApiService, ReversiService, + TimeService, + EnvService, ChartLoggerService, FederationChart, @@ -680,6 +684,8 @@ const $SponsorsService: Provider = { provide: 'SponsorsService', useExisting: Sp ChannelFollowingService, RegistryApiService, ReversiService, + TimeService, + EnvService, FederationChart, NotesChart, diff --git a/packages/backend/src/core/EnvService.ts b/packages/backend/src/core/EnvService.ts new file mode 100644 index 0000000000..8cc3b95735 --- /dev/null +++ b/packages/backend/src/core/EnvService.ts @@ -0,0 +1,20 @@ +/* + * SPDX-FileCopyrightText: hazelnoot and other Sharkey contributors + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { Injectable } from '@nestjs/common'; + +/** + * Provides access to the process environment variables. + * This exists for testing purposes, so that a test can mock the environment without corrupting state for other tests. + */ +@Injectable() +export class EnvService { + /** + * Passthrough to process.env + */ + public get env() { + return process.env; + } +} diff --git a/packages/backend/src/core/TimeService.ts b/packages/backend/src/core/TimeService.ts new file mode 100644 index 0000000000..59c3d4c12b --- /dev/null +++ b/packages/backend/src/core/TimeService.ts @@ -0,0 +1,27 @@ +/* + * SPDX-FileCopyrightText: hazelnoot and other Sharkey contributors + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { Injectable } from '@nestjs/common'; + +/** + * Provides abstractions to access the current time. + * Exists for unit testing purposes, so that tests can "simulate" any given time for consistency. + */ +@Injectable() +export class TimeService { + /** + * Returns Date.now() + */ + public get now() { + return Date.now(); + } + + /** + * Returns a new Date instance. + */ + public get date() { + return new Date(); + } +} |