From 45fbd22882eb8218422fc15b5b05b21a2a8abede Mon Sep 17 00:00:00 2001 From: Thomas <4159106+dtslvr@users.noreply.github.com> Date: Sat, 21 Oct 2023 12:09:03 +0200 Subject: [PATCH] Add OPEN_FIGI_API_KEY as an environment variable --- .../configuration/configuration.service.ts | 1 + .../data-enhancer/openfigi/openfigi.service.ts | 14 +++++++++++++- .../services/interfaces/environment.interface.ts | 1 + 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/apps/api/src/services/configuration/configuration.service.ts b/apps/api/src/services/configuration/configuration.service.ts index 40a04f5a0..b355d5a20 100644 --- a/apps/api/src/services/configuration/configuration.service.ts +++ b/apps/api/src/services/configuration/configuration.service.ts @@ -38,6 +38,7 @@ export class ConfigurationService { JWT_SECRET_KEY: str({}), MAX_ACTIVITIES_TO_IMPORT: num({ default: Number.MAX_SAFE_INTEGER }), MAX_ITEM_IN_CACHE: num({ default: 9999 }), + OPEN_FIGI_API_KEY: str({ default: '' }), PORT: port({ default: 3333 }), RAPID_API_API_KEY: str({ default: '' }), REDIS_HOST: str({ default: 'localhost' }), diff --git a/apps/api/src/services/data-provider/data-enhancer/openfigi/openfigi.service.ts b/apps/api/src/services/data-provider/data-enhancer/openfigi/openfigi.service.ts index 8e22662e1..5bb20df39 100644 --- a/apps/api/src/services/data-provider/data-enhancer/openfigi/openfigi.service.ts +++ b/apps/api/src/services/data-provider/data-enhancer/openfigi/openfigi.service.ts @@ -1,14 +1,19 @@ +import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataEnhancerInterface } from '@ghostfolio/api/services/data-provider/interfaces/data-enhancer.interface'; import { DEFAULT_REQUEST_TIMEOUT } from '@ghostfolio/common/config'; import { parseSymbol } from '@ghostfolio/common/helper'; import { Injectable } from '@nestjs/common'; import { SymbolProfile } from '@prisma/client'; -import got from 'got'; +import got, { Headers } from 'got'; @Injectable() export class OpenFigiDataEnhancerService implements DataEnhancerInterface { private static baseUrl = 'https://api.openfigi.com'; + public constructor( + private readonly configurationService: ConfigurationService + ) {} + public async enhance({ response, symbol @@ -29,6 +34,12 @@ export class OpenFigiDataEnhancerService implements DataEnhancerInterface { symbol, dataSource: response.dataSource }); + const headers: Headers = {}; + + if (this.configurationService.get('OPEN_FIGI_API_KEY')) { + headers['X-OPENFIGI-APIKEY'] = + this.configurationService.get('OPEN_FIGI_API_KEY'); + } let abortController = new AbortController(); @@ -38,6 +49,7 @@ export class OpenFigiDataEnhancerService implements DataEnhancerInterface { const mappings = await got .post(`${OpenFigiDataEnhancerService.baseUrl}/v3/mapping`, { + headers, json: [{ exchCode: exchange, idType: 'TICKER', idValue: ticker }], // @ts-ignore signal: abortController.signal diff --git a/apps/api/src/services/interfaces/environment.interface.ts b/apps/api/src/services/interfaces/environment.interface.ts index b437668ab..9b10a3205 100644 --- a/apps/api/src/services/interfaces/environment.interface.ts +++ b/apps/api/src/services/interfaces/environment.interface.ts @@ -26,6 +26,7 @@ export interface Environment extends CleanedEnvAccessors { JWT_SECRET_KEY: string; MAX_ACTIVITIES_TO_IMPORT: number; MAX_ITEM_IN_CACHE: number; + OPEN_FIGI_API_KEY: string; PORT: number; RAPID_API_API_KEY: string; REDIS_HOST: string;