From b80052f177e1bc7d1fbc4903418939b6b6bfd0c0 Mon Sep 17 00:00:00 2001 From: KernelDeimos Date: Tue, 22 Apr 2025 12:07:13 -0400 Subject: [PATCH] dev: add cost service integration to IPGeoService --- .../src/modules/external-extras/IPGeoService.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/backend/src/modules/external-extras/IPGeoService.js b/src/backend/src/modules/external-extras/IPGeoService.js index daba6abca..fd84d592b 100644 --- a/src/backend/src/modules/external-extras/IPGeoService.js +++ b/src/backend/src/modules/external-extras/IPGeoService.js @@ -1,3 +1,4 @@ +const APIError = require("../../api/APIError"); const BaseService = require("../../services/BaseService"); class IPGeoService extends BaseService { @@ -40,6 +41,20 @@ class IPGeoService extends BaseService { ip, }); + { + const microcents_per_request = this.config.microcents_per_request + ?? 7000; + const svc_cost = this.services.get('cost'); + const usageAllowed = await svc_cost.get_funding_allowed({ + minimum: microcents_per_request, + }); + if ( ! usageAllowed ) { + throw APIError.create('insufficient_funds'); + } + await svc_cost.record_cost({ cost: microcents_per_request }); + } + + const resp = await axios.request({ method: 'GET', url: 'https://api.ipgeolocation.io/ipgeo?' + qstr,