From c5c17bae3a741c40c7806dfb8a9dc23a317e2092 Mon Sep 17 00:00:00 2001 From: KernelDeimos Date: Fri, 25 Apr 2025 14:14:58 -0400 Subject: [PATCH] dev: add cost calculation for NewsDataService --- .../modules/external-extras/NewsDataService.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/backend/src/modules/external-extras/NewsDataService.js b/src/backend/src/modules/external-extras/NewsDataService.js index 76e66adf6..53dd96abd 100644 --- a/src/backend/src/modules/external-extras/NewsDataService.js +++ b/src/backend/src/modules/external-extras/NewsDataService.js @@ -27,6 +27,8 @@ class NewsDataService extends BaseService { static IMPLEMENTS = { newsdata: { async newsdata (parameters) { + const cost_per_article = + this.config.cost_per_article ?? 13000; // doing this makes vscode recognize what's being required const require = this.require; @@ -47,6 +49,20 @@ class NewsDataService extends BaseService { url: 'https://newsdata.io/api/1/latest?' + qstr, }); + const amount_articles = resp.data.results.length; + + { + const cost = amount_articles * cost_per_article; + const svc_cost = this.services.get('cost'); + const usageAllowed = await svc_cost.get_funding_allowed({ + minimum: cost, + }); + if ( ! usageAllowed ) { + throw APIError.create('insufficient_funds'); + } + await svc_cost.record_cost({ cost }); + } + return resp.data; } }