Browse Source

Feature/increase timeout to load historical data in data provider service (#2887)

* Increase timeout to load historical data

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

1
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

3
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 };
}> {

5
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(
`${

2
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 }))
);
}

10
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;

5
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}`,

3
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 };
}> {

3
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

3
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 };
}> {

3
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 };
}> {

3
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 };
}> {

Loading…
Cancel
Save