diff --git a/CHANGELOG.md b/CHANGELOG.md index a2a22943a..21d2a990e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Increased the timeout to load historical data in the data provider service - Improved the asset profile validation for `MANUAL` data source in the activities import ## 2.40.0 - 2024-01-15 diff --git a/apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts b/apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts index b40f35b36..454a99652 100644 --- a/apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts +++ b/apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts @@ -57,7 +57,8 @@ export class AlphaVantageService implements DataProviderInterface { aSymbol: string, aGranularity: Granularity = 'day', from: Date, - to: Date + to: Date, + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT') ): Promise<{ [symbol: string]: { [date: string]: IDataProviderHistoricalResponse }; }> { diff --git a/apps/api/src/services/data-provider/coingecko/coingecko.service.ts b/apps/api/src/services/data-provider/coingecko/coingecko.service.ts index a12c1bb20..d132cd15e 100644 --- a/apps/api/src/services/data-provider/coingecko/coingecko.service.ts +++ b/apps/api/src/services/data-provider/coingecko/coingecko.service.ts @@ -104,7 +104,8 @@ export class CoinGeckoService implements DataProviderInterface { aSymbol: string, aGranularity: Granularity = 'day', from: Date, - to: Date + to: Date, + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT') ): Promise<{ [symbol: string]: { [date: string]: IDataProviderHistoricalResponse }; }> { @@ -113,7 +114,7 @@ export class CoinGeckoService implements DataProviderInterface { setTimeout(() => { abortController.abort(); - }, this.configurationService.get('REQUEST_TIMEOUT')); + }, requestTimeout); const { prices } = await got( `${ diff --git a/apps/api/src/services/data-provider/data-provider.service.ts b/apps/api/src/services/data-provider/data-provider.service.ts index cd5874ca7..a8f47f0d4 100644 --- a/apps/api/src/services/data-provider/data-provider.service.ts +++ b/apps/api/src/services/data-provider/data-provider.service.ts @@ -218,7 +218,7 @@ export class DataProviderService { if (dataProvider.canHandle(symbol)) { promises.push( dataProvider - .getHistorical(symbol, undefined, from, to) + .getHistorical(symbol, undefined, from, to, ms('30 seconds')) .then((data) => ({ data: data?.[symbol], symbol })) ); } diff --git a/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts b/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts index 649b0c354..d2943692b 100644 --- a/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts +++ b/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts @@ -68,7 +68,8 @@ export class EodHistoricalDataService implements DataProviderInterface { aSymbol: string, aGranularity: Granularity = 'day', from: Date, - to: Date + to: Date, + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT') ): Promise<{ [symbol: string]: { [date: string]: IDataProviderHistoricalResponse }; }> { @@ -79,7 +80,7 @@ export class EodHistoricalDataService implements DataProviderInterface { setTimeout(() => { abortController.abort(); - }, this.configurationService.get('REQUEST_TIMEOUT')); + }, requestTimeout); const response = await got( `${this.URL}/eod/${symbol}?api_token=${ @@ -87,7 +88,7 @@ export class EodHistoricalDataService implements DataProviderInterface { }&fmt=json&from=${format(from, DATE_FORMAT)}&to=${format( to, DATE_FORMAT - )}&period={aGranularity}`, + )}&period=${aGranularity}`, { // @ts-ignore signal: abortController.signal @@ -100,8 +101,7 @@ export class EodHistoricalDataService implements DataProviderInterface { marketPrice: this.getConvertedValue({ symbol: aSymbol, value: historicalItem.close - }), - performance: historicalItem.open - historicalItem.close + }) }; return result; diff --git a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts index e16093d3e..623df7a25 100644 --- a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts +++ b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts @@ -58,7 +58,8 @@ export class FinancialModelingPrepService implements DataProviderInterface { aSymbol: string, aGranularity: Granularity = 'day', from: Date, - to: Date + to: Date, + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT') ): Promise<{ [symbol: string]: { [date: string]: IDataProviderHistoricalResponse }; }> { @@ -67,7 +68,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { setTimeout(() => { abortController.abort(); - }, this.configurationService.get('REQUEST_TIMEOUT')); + }, requestTimeout); const { historical } = await got( `${this.URL}/historical-price-full/${aSymbol}?apikey=${this.apiKey}`, diff --git a/apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts b/apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts index e753db3a3..5a5357feb 100644 --- a/apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts +++ b/apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts @@ -53,7 +53,8 @@ export class GoogleSheetsService implements DataProviderInterface { aSymbol: string, aGranularity: Granularity = 'day', from: Date, - to: Date + to: Date, + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT') ): Promise<{ [symbol: string]: { [date: string]: IDataProviderHistoricalResponse }; }> { diff --git a/apps/api/src/services/data-provider/interfaces/data-provider.interface.ts b/apps/api/src/services/data-provider/interfaces/data-provider.interface.ts index a27c8544c..b2562d362 100644 --- a/apps/api/src/services/data-provider/interfaces/data-provider.interface.ts +++ b/apps/api/src/services/data-provider/interfaces/data-provider.interface.ts @@ -27,7 +27,8 @@ export interface DataProviderInterface { aSymbol: string, aGranularity: Granularity, from: Date, - to: Date + to: Date, + requestTimeout?: number ): Promise<{ [symbol: string]: { [date: string]: IDataProviderHistoricalResponse }; }>; // TODO: Return only one symbol diff --git a/apps/api/src/services/data-provider/manual/manual.service.ts b/apps/api/src/services/data-provider/manual/manual.service.ts index 77b96e3ac..decaf1212 100644 --- a/apps/api/src/services/data-provider/manual/manual.service.ts +++ b/apps/api/src/services/data-provider/manual/manual.service.ts @@ -61,7 +61,8 @@ export class ManualService implements DataProviderInterface { aSymbol: string, aGranularity: Granularity = 'day', from: Date, - to: Date + to: Date, + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT') ): Promise<{ [symbol: string]: { [date: string]: IDataProviderHistoricalResponse }; }> { diff --git a/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts b/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts index ba746ebbe..c1be20d2d 100644 --- a/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts +++ b/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts @@ -50,7 +50,8 @@ export class RapidApiService implements DataProviderInterface { aSymbol: string, aGranularity: Granularity = 'day', from: Date, - to: Date + to: Date, + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT') ): Promise<{ [symbol: string]: { [date: string]: IDataProviderHistoricalResponse }; }> { diff --git a/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts b/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts index 2a972d176..edce72abe 100644 --- a/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts +++ b/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts @@ -104,7 +104,8 @@ export class YahooFinanceService implements DataProviderInterface { aSymbol: string, aGranularity: Granularity = 'day', from: Date, - to: Date + to: Date, + requestTimeout = this.configurationService.get('REQUEST_TIMEOUT') ): Promise<{ [symbol: string]: { [date: string]: IDataProviderHistoricalResponse }; }> {