diff --git a/apps/api/src/services/fetch/fetch.service.ts b/apps/api/src/services/fetch/fetch.service.ts index d797b82dd..3908e8148 100644 --- a/apps/api/src/services/fetch/fetch.service.ts +++ b/apps/api/src/services/fetch/fetch.service.ts @@ -2,22 +2,32 @@ import { redactPaths } from '@ghostfolio/api/helper/object.helper'; import { PropertyService } from '@ghostfolio/api/services/property/property.service'; import { PROPERTY_API_KEY_OPENROUTER, - PROPERTY_OPENROUTER_MODEL + PROPERTY_OPENROUTER_MODEL, + PROPERTY_WEB_FETCH_DOMAINS } from '@ghostfolio/common/config'; -import { Injectable, Logger } from '@nestjs/common'; +import { Injectable, Logger, OnModuleInit } from '@nestjs/common'; import { createOpenRouter } from '@openrouter/ai-sdk-provider'; import { generateText, jsonSchema, tool } from 'ai'; import ms from 'ms'; +import { WebFetchDomain } from './interfaces/web-fetch-domain.interface'; + @Injectable() -export class FetchService { +export class FetchService implements OnModuleInit { private static readonly REDACTED_QUERY_PARAM_NAMES = ['apikey', 'api_token']; - private webFetchDomains: { domain: string }[] = []; + private webFetchDomains: WebFetchDomain[] = []; public constructor(private readonly propertyService: PropertyService) {} + public async onModuleInit() { + this.webFetchDomains = + (await this.propertyService.getByKey( + PROPERTY_WEB_FETCH_DOMAINS + )) ?? []; + } + public async fetch( input: RequestInfo | URL, init?: RequestInit diff --git a/apps/api/src/services/fetch/interfaces/web-fetch-domain.interface.ts b/apps/api/src/services/fetch/interfaces/web-fetch-domain.interface.ts new file mode 100644 index 000000000..231438181 --- /dev/null +++ b/apps/api/src/services/fetch/interfaces/web-fetch-domain.interface.ts @@ -0,0 +1,3 @@ +export interface WebFetchDomain { + domain: string; +} diff --git a/libs/common/src/lib/config.ts b/libs/common/src/lib/config.ts index 113dffe4a..56850ca09 100644 --- a/libs/common/src/lib/config.ts +++ b/libs/common/src/lib/config.ts @@ -256,6 +256,7 @@ export const PROPERTY_SLACK_COMMUNITY_USERS = 'SLACK_COMMUNITY_USERS'; export const PROPERTY_STRIPE_CONFIG = 'STRIPE_CONFIG'; export const PROPERTY_SYSTEM_MESSAGE = 'SYSTEM_MESSAGE'; export const PROPERTY_UPTIME = 'UPTIME'; +export const PROPERTY_WEB_FETCH_DOMAINS = 'WEB_FETCH_DOMAINS'; export const QUEUE_JOB_STATUS_LIST = [ 'active',