diff --git a/src/backend/src/modules/external-extras/IPGeoService.js b/src/backend/src/modules/external-extras/IPGeoService.js index 024528a60..b954c9d00 100644 --- a/src/backend/src/modules/external-extras/IPGeoService.js +++ b/src/backend/src/modules/external-extras/IPGeoService.js @@ -11,6 +11,7 @@ class IPGeoService extends BaseService { methods: { ipgeo: { description: 'Report geolocation information', + default_parameter: 'ip', parameters: { ip: { type: 'string', diff --git a/src/backend/src/modules/external-extras/NewsDataService.js b/src/backend/src/modules/external-extras/NewsDataService.js index 53dd96abd..b0149f7de 100644 --- a/src/backend/src/modules/external-extras/NewsDataService.js +++ b/src/backend/src/modules/external-extras/NewsDataService.js @@ -11,6 +11,7 @@ class NewsDataService extends BaseService { methods: { newsdata: { description: 'Report geolocation information', + default_parameter: 'q', parameters: { '*': { type: 'json', diff --git a/src/backend/src/services/drivers/DriverService.js b/src/backend/src/services/drivers/DriverService.js index 025ec4c59..8a42d3547 100644 --- a/src/backend/src/services/drivers/DriverService.js +++ b/src/backend/src/services/drivers/DriverService.js @@ -25,6 +25,7 @@ const BaseService = require("../BaseService"); const { PermissionUtil } = require("../auth/PermissionService"); const { Invoker } = require("../../../../putility/src/libs/invoker"); const { get_user } = require("../../helpers"); +const { whatis } = require('../../util/langutil'); const strutil = require('@heyputer/putility').libs.string; @@ -515,6 +516,11 @@ class DriverService extends BaseService { if ( ! method ) { throw svc_apiError.create('method_not_found', { interface_name, method_name }); } + + if ( method.hasOwnProperty('default_parameter') && whatis(args) !== 'object' ) { + args = { [method.default_parameter]: args }; + } + for ( const [arg_name, arg_descriptor] of Object.entries(method.parameters) ) { const arg_value = arg_name === '*' ? args : args[arg_name];