From e805fecb97590375c0481ff3bf9700259f617eb6 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 25 Nov 2024 21:06:14 +0100 Subject: [PATCH] Improve API key management --- .../ghostfolio/ghostfolio.service.ts | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/apps/api/src/services/data-provider/ghostfolio/ghostfolio.service.ts b/apps/api/src/services/data-provider/ghostfolio/ghostfolio.service.ts index a1ac6b657..acd66b0af 100644 --- a/apps/api/src/services/data-provider/ghostfolio/ghostfolio.service.ts +++ b/apps/api/src/services/data-provider/ghostfolio/ghostfolio.service.ts @@ -31,7 +31,6 @@ import got from 'got'; @Injectable() export class GhostfolioService implements DataProviderInterface { - private apiKey: string; private readonly URL = environment.production ? 'https://ghostfol.io/api' : `${this.configurationService.get('ROOT_URL')}/api`; @@ -39,15 +38,7 @@ export class GhostfolioService implements DataProviderInterface { public constructor( private readonly configurationService: ConfigurationService, private readonly propertyService: PropertyService - ) { - void this.initialize(); - } - - public async initialize() { - this.apiKey = (await this.propertyService.getByKey( - PROPERTY_API_KEY_GHOSTFOLIO - )) as string; - } + ) {} public canHandle() { return true; @@ -105,7 +96,7 @@ export class GhostfolioService implements DataProviderInterface { DATE_FORMAT )}`, { - headers: this.getRequestHeaders(), + headers: await this.getRequestHeaders(), // @ts-ignore signal: abortController.signal } @@ -154,7 +145,7 @@ export class GhostfolioService implements DataProviderInterface { const { quotes } = await got( `${this.URL}/v1/data-providers/ghostfolio/quotes?symbols=${symbols.join(',')}`, { - headers: this.getRequestHeaders(), + headers: await this.getRequestHeaders(), // @ts-ignore signal: abortController.signal } @@ -193,7 +184,7 @@ export class GhostfolioService implements DataProviderInterface { searchResult = await got( `${this.URL}/v1/data-providers/ghostfolio/lookup?query=${query}`, { - headers: this.getRequestHeaders(), + headers: await this.getRequestHeaders(), // @ts-ignore signal: abortController.signal } @@ -213,9 +204,13 @@ export class GhostfolioService implements DataProviderInterface { return searchResult; } - private getRequestHeaders() { + private async getRequestHeaders() { + const apiKey = (await this.propertyService.getByKey( + PROPERTY_API_KEY_GHOSTFOLIO + )) as string; + return { - [HEADER_KEY_TOKEN]: `Bearer ${this.apiKey}` + [HEADER_KEY_TOKEN]: `Bearer ${apiKey}` }; } }