Pārlūkot izejas kodu

dev: add cost calculation for NewsDataService

KernelDeimos 3 nedēļas atpakaļ
vecāks
revīzija
c5c17bae3a

+ 16 - 0
src/backend/src/modules/external-extras/NewsDataService.js

@@ -27,6 +27,8 @@ class NewsDataService extends BaseService {
     static IMPLEMENTS = {
     static IMPLEMENTS = {
         newsdata: {
         newsdata: {
             async newsdata (parameters) {
             async newsdata (parameters) {
+                const cost_per_article =
+                    this.config.cost_per_article ?? 13000;
                 // doing this makes vscode recognize what's being required
                 // doing this makes vscode recognize what's being required
                 const require = this.require;
                 const require = this.require;
 
 
@@ -47,6 +49,20 @@ class NewsDataService extends BaseService {
                     url: 'https://newsdata.io/api/1/latest?' + qstr,
                     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;
                 return resp.data;
             }
             }
         }
         }