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,