Browse Source

Add OPEN_FIGI_API_KEY as an environment variable

pull/2526/head
Thomas 2 years ago
parent
commit
45fbd22882
  1. 1
      apps/api/src/services/configuration/configuration.service.ts
  2. 14
      apps/api/src/services/data-provider/data-enhancer/openfigi/openfigi.service.ts
  3. 1
      apps/api/src/services/interfaces/environment.interface.ts

1
apps/api/src/services/configuration/configuration.service.ts

@ -38,6 +38,7 @@ export class ConfigurationService {
JWT_SECRET_KEY: str({}), JWT_SECRET_KEY: str({}),
MAX_ACTIVITIES_TO_IMPORT: num({ default: Number.MAX_SAFE_INTEGER }), MAX_ACTIVITIES_TO_IMPORT: num({ default: Number.MAX_SAFE_INTEGER }),
MAX_ITEM_IN_CACHE: num({ default: 9999 }), MAX_ITEM_IN_CACHE: num({ default: 9999 }),
OPEN_FIGI_API_KEY: str({ default: '' }),
PORT: port({ default: 3333 }), PORT: port({ default: 3333 }),
RAPID_API_API_KEY: str({ default: '' }), RAPID_API_API_KEY: str({ default: '' }),
REDIS_HOST: str({ default: 'localhost' }), REDIS_HOST: str({ default: 'localhost' }),

14
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 { DataEnhancerInterface } from '@ghostfolio/api/services/data-provider/interfaces/data-enhancer.interface';
import { DEFAULT_REQUEST_TIMEOUT } from '@ghostfolio/common/config'; import { DEFAULT_REQUEST_TIMEOUT } from '@ghostfolio/common/config';
import { parseSymbol } from '@ghostfolio/common/helper'; import { parseSymbol } from '@ghostfolio/common/helper';
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
import { SymbolProfile } from '@prisma/client'; import { SymbolProfile } from '@prisma/client';
import got from 'got'; import got, { Headers } from 'got';
@Injectable() @Injectable()
export class OpenFigiDataEnhancerService implements DataEnhancerInterface { export class OpenFigiDataEnhancerService implements DataEnhancerInterface {
private static baseUrl = 'https://api.openfigi.com'; private static baseUrl = 'https://api.openfigi.com';
public constructor(
private readonly configurationService: ConfigurationService
) {}
public async enhance({ public async enhance({
response, response,
symbol symbol
@ -29,6 +34,12 @@ export class OpenFigiDataEnhancerService implements DataEnhancerInterface {
symbol, symbol,
dataSource: response.dataSource 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(); let abortController = new AbortController();
@ -38,6 +49,7 @@ export class OpenFigiDataEnhancerService implements DataEnhancerInterface {
const mappings = await got const mappings = await got
.post(`${OpenFigiDataEnhancerService.baseUrl}/v3/mapping`, { .post(`${OpenFigiDataEnhancerService.baseUrl}/v3/mapping`, {
headers,
json: [{ exchCode: exchange, idType: 'TICKER', idValue: ticker }], json: [{ exchCode: exchange, idType: 'TICKER', idValue: ticker }],
// @ts-ignore // @ts-ignore
signal: abortController.signal signal: abortController.signal

1
apps/api/src/services/interfaces/environment.interface.ts

@ -26,6 +26,7 @@ export interface Environment extends CleanedEnvAccessors {
JWT_SECRET_KEY: string; JWT_SECRET_KEY: string;
MAX_ACTIVITIES_TO_IMPORT: number; MAX_ACTIVITIES_TO_IMPORT: number;
MAX_ITEM_IN_CACHE: number; MAX_ITEM_IN_CACHE: number;
OPEN_FIGI_API_KEY: string;
PORT: number; PORT: number;
RAPID_API_API_KEY: string; RAPID_API_API_KEY: string;
REDIS_HOST: string; REDIS_HOST: string;

Loading…
Cancel
Save