From 5b786ba1431536e30a587cd9b93e4e8a5b44acc2 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 7 Feb 2025 10:32:25 +0100 Subject: [PATCH] Feature/improve error handling in CoinGecko service (#4287) * Improve error handling * Update changelog --- CHANGELOG.md | 1 + .../data-provider/coingecko/coingecko.service.ts | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e4ae5b6..2a6f45a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved the caching of the portfolio snapshot in the portfolio calculator by expiring cache entries when a user changes tags in the holding detail dialog +- Improved the error handling in the _CoinGecko_ service - Improved the language localization for German (`de`) - Upgraded `svgmap` from version `2.6.0` to `2.12.2` 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 30dbe0ae..fb1fa9b6 100644 --- a/apps/api/src/services/data-provider/coingecko/coingecko.service.ts +++ b/apps/api/src/services/data-provider/coingecko/coingecko.service.ts @@ -112,7 +112,7 @@ export class CoinGeckoService implements DataProviderInterface { [symbol: string]: { [date: string]: IDataProviderHistoricalResponse }; }> { try { - const { prices } = await fetch( + const { error, prices, status } = await fetch( `${ this.apiUrl }/coins/${symbol}/market_chart/range?vs_currency=${DEFAULT_CURRENCY.toLowerCase()}&from=${getUnixTime( @@ -124,6 +124,14 @@ export class CoinGeckoService implements DataProviderInterface { } ).then((res) => res.json()); + if (error?.status) { + throw new Error(error.status.error_message); + } + + if (status) { + throw new Error(status.error_message); + } + const result: { [symbol: string]: { [date: string]: IDataProviderHistoricalResponse }; } = {