From d1a4cb5037d8c6b7b588cdd093116cb97567cce1 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 11 Apr 2025 19:04:03 +0200 Subject: [PATCH] Feature/improve financial modeling prep service (#4528) * Improve service * Set maximum number of symbols per request * Migrate getQuotes to stable API version * Update changelog --- CHANGELOG.md | 2 ++ .../financial-modeling-prep.service.ts | 16 +++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fd591b934..72fbd47bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Set the maximum number of symbols per request in the _Financial Modeling Prep_ service +- Migrated the get quotes functionality of the _Financial Modeling Prep_ service to its stable API version - Improved the language localization for Enlish (`en`) - Upgraded `eslint` dependencies - Upgraded `Nx` from version `20.6.4` to `20.7.1` 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 119e8ea67..d6eaec076 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 @@ -325,6 +325,10 @@ export class FinancialModelingPrepService implements DataProviderInterface { } } + public getMaxNumberOfSymbolsPerRequest() { + return 20; + } + public getName(): DataSource { return DataSource.FINANCIAL_MODELING_PREP; } @@ -341,7 +345,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { try { const quotes = await fetch( - `${this.URL}/quote/${symbols.join(',')}?apikey=${this.apiKey}`, + `${this.getUrl({ version: 'stable' })}/batch-quote-short?symbols=${symbols.join(',')}&apikey=${this.apiKey}`, { signal: AbortSignal.timeout(requestTimeout) } @@ -451,8 +455,14 @@ export class FinancialModelingPrepService implements DataProviderInterface { return name; } - private getUrl({ version }: { version: number }) { - return `https://financialmodelingprep.com/api/v${version}`; + private getUrl({ version }: { version: number | 'stable' }) { + const baseUrl = 'https://financialmodelingprep.com'; + + if (version === 'stable') { + return `${baseUrl}/stable`; + } + + return `${baseUrl}/api/v${version}`; } private parseAssetClass(profile: any): {