Browse Source

Refactor params to object (#2987)

pull/3027/head
Thomas Kaul 11 months ago
committed by GitHub
parent
commit
9acdb41aa2
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 12
      apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts
  2. 16
      apps/api/src/services/data-provider/coingecko/coingecko.service.ts
  3. 4
      apps/api/src/services/data-provider/data-provider.service.ts
  4. 14
      apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts
  5. 12
      apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts
  6. 12
      apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts
  7. 6
      apps/api/src/services/data-provider/interfaces/data-provider.interface.ts
  8. 14
      apps/api/src/services/data-provider/manual/manual.service.ts
  9. 12
      apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts
  10. 12
      apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts

12
apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts

@ -37,12 +37,14 @@ export class AlphaVantageService implements DataProviderInterface {
return !!this.configurationService.get('API_KEY_ALPHA_VANTAGE'); return !!this.configurationService.get('API_KEY_ALPHA_VANTAGE');
} }
public async getAssetProfile( public async getAssetProfile({
aSymbol: string symbol
): Promise<Partial<SymbolProfile>> { }: {
symbol: string;
}): Promise<Partial<SymbolProfile>> {
return { return {
dataSource: this.getName(), symbol,
symbol: aSymbol dataSource: this.getName()
}; };
} }

16
apps/api/src/services/data-provider/coingecko/coingecko.service.ts

@ -52,15 +52,17 @@ export class CoinGeckoService implements DataProviderInterface {
return true; return true;
} }
public async getAssetProfile( public async getAssetProfile({
aSymbol: string symbol
): Promise<Partial<SymbolProfile>> { }: {
symbol: string;
}): Promise<Partial<SymbolProfile>> {
const response: Partial<SymbolProfile> = { const response: Partial<SymbolProfile> = {
symbol,
assetClass: AssetClass.CASH, assetClass: AssetClass.CASH,
assetSubClass: AssetSubClass.CRYPTOCURRENCY, assetSubClass: AssetSubClass.CRYPTOCURRENCY,
currency: DEFAULT_CURRENCY, currency: DEFAULT_CURRENCY,
dataSource: this.getName(), dataSource: this.getName()
symbol: aSymbol
}; };
try { try {
@ -70,7 +72,7 @@ export class CoinGeckoService implements DataProviderInterface {
abortController.abort(); abortController.abort();
}, this.configurationService.get('REQUEST_TIMEOUT')); }, this.configurationService.get('REQUEST_TIMEOUT'));
const { name } = await got(`${this.apiUrl}/coins/${aSymbol}`, { const { name } = await got(`${this.apiUrl}/coins/${symbol}`, {
headers: this.headers, headers: this.headers,
// @ts-ignore // @ts-ignore
signal: abortController.signal signal: abortController.signal
@ -81,7 +83,7 @@ export class CoinGeckoService implements DataProviderInterface {
let message = error; let message = error;
if (error?.code === 'ABORT_ERR') { if (error?.code === 'ABORT_ERR') {
message = `RequestError: The operation to get the asset profile for ${aSymbol} was aborted because the request to the data provider took more than ${this.configurationService.get( message = `RequestError: The operation to get the asset profile for ${symbol} was aborted because the request to the data provider took more than ${this.configurationService.get(
'REQUEST_TIMEOUT' 'REQUEST_TIMEOUT'
)}ms`; )}ms`;
} }

4
apps/api/src/services/data-provider/data-provider.service.ts

@ -92,7 +92,9 @@ export class DataProviderService {
for (const symbol of symbols) { for (const symbol of symbols) {
const promise = Promise.resolve( const promise = Promise.resolve(
this.getDataProvider(DataSource[dataSource]).getAssetProfile(symbol) this.getDataProvider(DataSource[dataSource]).getAssetProfile({
symbol
})
); );
promises.push( promises.push(

14
apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts

@ -46,19 +46,21 @@ export class EodHistoricalDataService implements DataProviderInterface {
return true; return true;
} }
public async getAssetProfile( public async getAssetProfile({
aSymbol: string symbol
): Promise<Partial<SymbolProfile>> { }: {
const [searchResult] = await this.getSearchResult(aSymbol); symbol: string;
}): Promise<Partial<SymbolProfile>> {
const [searchResult] = await this.getSearchResult(symbol);
return { return {
symbol,
assetClass: searchResult?.assetClass, assetClass: searchResult?.assetClass,
assetSubClass: searchResult?.assetSubClass, assetSubClass: searchResult?.assetSubClass,
currency: this.convertCurrency(searchResult?.currency), currency: this.convertCurrency(searchResult?.currency),
dataSource: this.getName(), dataSource: this.getName(),
isin: searchResult?.isin, isin: searchResult?.isin,
name: searchResult?.name, name: searchResult?.name
symbol: aSymbol
}; };
} }

12
apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts

@ -37,12 +37,14 @@ export class FinancialModelingPrepService implements DataProviderInterface {
return true; return true;
} }
public async getAssetProfile( public async getAssetProfile({
aSymbol: string symbol
): Promise<Partial<SymbolProfile>> { }: {
symbol: string;
}): Promise<Partial<SymbolProfile>> {
return { return {
dataSource: this.getName(), symbol,
symbol: aSymbol dataSource: this.getName()
}; };
} }

12
apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts

@ -33,12 +33,14 @@ export class GoogleSheetsService implements DataProviderInterface {
return true; return true;
} }
public async getAssetProfile( public async getAssetProfile({
aSymbol: string symbol
): Promise<Partial<SymbolProfile>> { }: {
symbol: string;
}): Promise<Partial<SymbolProfile>> {
return { return {
dataSource: this.getName(), symbol,
symbol: aSymbol dataSource: this.getName()
}; };
} }

6
apps/api/src/services/data-provider/interfaces/data-provider.interface.ts

@ -11,7 +11,11 @@ import { DataSource, SymbolProfile } from '@prisma/client';
export interface DataProviderInterface { export interface DataProviderInterface {
canHandle(symbol: string): boolean; canHandle(symbol: string): boolean;
getAssetProfile(aSymbol: string): Promise<Partial<SymbolProfile>>; getAssetProfile({
symbol
}: {
symbol: string;
}): Promise<Partial<SymbolProfile>>;
getDataProviderInfo(): DataProviderInfo; getDataProviderInfo(): DataProviderInfo;

14
apps/api/src/services/data-provider/manual/manual.service.ts

@ -43,16 +43,18 @@ export class ManualService implements DataProviderInterface {
return true; return true;
} }
public async getAssetProfile( public async getAssetProfile({
aSymbol: string symbol
): Promise<Partial<SymbolProfile>> { }: {
symbol: string;
}): Promise<Partial<SymbolProfile>> {
const assetProfile: Partial<SymbolProfile> = { const assetProfile: Partial<SymbolProfile> = {
dataSource: this.getName(), symbol,
symbol: aSymbol dataSource: this.getName()
}; };
const [symbolProfile] = await this.symbolProfileService.getSymbolProfiles([ const [symbolProfile] = await this.symbolProfileService.getSymbolProfiles([
{ dataSource: this.getName(), symbol: aSymbol } { symbol, dataSource: this.getName() }
]); ]);
if (symbolProfile) { if (symbolProfile) {

12
apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts

@ -30,12 +30,14 @@ export class RapidApiService implements DataProviderInterface {
return !!this.configurationService.get('API_KEY_RAPID_API'); return !!this.configurationService.get('API_KEY_RAPID_API');
} }
public async getAssetProfile( public async getAssetProfile({
aSymbol: string symbol
): Promise<Partial<SymbolProfile>> { }: {
symbol: string;
}): Promise<Partial<SymbolProfile>> {
return { return {
dataSource: this.getName(), symbol,
symbol: aSymbol dataSource: this.getName()
}; };
} }

12
apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts

@ -33,11 +33,13 @@ export class YahooFinanceService implements DataProviderInterface {
return true; return true;
} }
public async getAssetProfile( public async getAssetProfile({
aSymbol: string symbol
): Promise<Partial<SymbolProfile>> { }: {
const { assetClass, assetSubClass, currency, name, symbol } = symbol: string;
await this.yahooFinanceDataEnhancerService.getAssetProfile(aSymbol); }): Promise<Partial<SymbolProfile>> {
const { assetClass, assetSubClass, currency, name } =
await this.yahooFinanceDataEnhancerService.getAssetProfile(symbol);
return { return {
assetClass, assetClass,

Loading…
Cancel
Save