From e95b2be88db9947f12746e7e00bc64aa8cfba3e2 Mon Sep 17 00:00:00 2001 From: Radu Ioan Fericean Date: Tue, 14 Jul 2015 21:23:21 +0300 Subject: [PATCH] simpler console command interface --- cmd/cgr-console/cgr-console.go | 4 +++- cmd/cgr-engine/cgr-engine.go | 2 +- console/account_add.go | 7 ++----- console/account_remove.go | 7 ++----- console/accountactions_set.go | 7 ++----- console/accounts.go | 7 ++----- console/action_execute.go | 7 ++----- console/active_sessions.go | 7 ++----- console/balance_debit.go | 7 ++----- console/balance_set.go | 7 ++----- console/cache_age.go | 7 ++----- console/cache_reload.go | 7 ++----- console/cache_stats.go | 7 ++----- console/callcost.go | 7 ++----- console/cdrs_export.go | 7 ++----- console/cdrs_rem.go | 7 ++----- console/cdrstats_metrics.go | 7 ++----- console/cdrstats_queue.go | 7 ++----- console/cdrstats_queue_triggers.go | 7 ++----- console/cdrstats_queueids.go | 7 ++----- console/cdrstats_reload.go | 7 ++----- console/cdrstats_reset.go | 7 ++----- console/command.go | 4 +++- console/command_executer.go | 10 +++++++--- console/cost.go | 7 ++----- console/datacost.go | 7 ++----- console/destination.go | 7 ++----- console/destination_set.go | 7 ++----- console/lcr.go | 7 ++----- console/load_tp_from_folder.go | 7 ++----- console/load_tp_from_stordb.go | 7 ++----- console/maxduration.go | 7 ++----- console/parse.go | 7 ++----- console/publish.go | 7 ++----- console/ratingprofile_set.go | 7 ++----- console/scheduler_reload.go | 7 ++----- console/sharedgroup.go | 7 ++----- console/status.go | 11 ++++------- console/subscribe.go | 7 ++----- console/subscribers.go | 7 ++----- console/triggeredaction_add.go | 7 ++----- console/unsubscribe.go | 7 ++----- console/user_addindex.go | 7 ++----- console/user_indexes.go | 11 ++++------- console/user_remove.go | 7 ++----- console/user_set.go | 7 ++----- console/user_update.go | 7 ++----- console/users.go | 7 ++----- engine/users.go | 25 +++++++++++++++++++++++++ 49 files changed, 131 insertions(+), 230 deletions(-) diff --git a/cmd/cgr-console/cgr-console.go b/cmd/cgr-console/cgr-console.go index cb3312c41..6301ce4e2 100644 --- a/cmd/cgr-console/cgr-console.go +++ b/cmd/cgr-console/cgr-console.go @@ -77,9 +77,11 @@ func executeCommand(command string) { } if cmd.RpcMethod() != "" { res := cmd.RpcResult() - param := cmd.RpcParams(true, false) + param := cmd.RpcParams(false) //log.Print(reflect.TypeOf(param)) switch param.(type) { + case *console.EmptyWrapper: + param = "" case *console.StringWrapper: param = param.(*console.StringWrapper).Item case *console.StringSliceWrapper: diff --git a/cmd/cgr-engine/cgr-engine.go b/cmd/cgr-engine/cgr-engine.go index 40d41de96..5b60033f2 100644 --- a/cmd/cgr-engine/cgr-engine.go +++ b/cmd/cgr-engine/cgr-engine.go @@ -541,7 +541,7 @@ func main() { return } } - engine.SetUserService(users) + engine.SetUserService(userServer) }() wg.Wait() diff --git a/console/account_add.go b/console/account_add.go index 660be2ff6..315caa1b6 100644 --- a/console/account_add.go +++ b/console/account_add.go @@ -45,14 +45,11 @@ func (self *CmdAddAccount) RpcMethod() string { return self.rpcMethod } -func (self *CmdAddAccount) RpcParams(ptr, reset bool) interface{} { +func (self *CmdAddAccount) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &utils.AttrSetAccount{Direction: utils.OUT} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdAddAccount) PostprocessRpcParams() error { diff --git a/console/account_remove.go b/console/account_remove.go index 22e516038..10380d32f 100644 --- a/console/account_remove.go +++ b/console/account_remove.go @@ -45,14 +45,11 @@ func (self *CmdRemoveAccount) RpcMethod() string { return self.rpcMethod } -func (self *CmdRemoveAccount) RpcParams(ptr, reset bool) interface{} { +func (self *CmdRemoveAccount) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &utils.AttrRemoveAccount{Direction: utils.OUT} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdRemoveAccount) PostprocessRpcParams() error { diff --git a/console/accountactions_set.go b/console/accountactions_set.go index 75b757c39..69e54bd10 100644 --- a/console/accountactions_set.go +++ b/console/accountactions_set.go @@ -45,14 +45,11 @@ func (self *CmdSetAccountActions) RpcMethod() string { return self.rpcMethod } -func (self *CmdSetAccountActions) RpcParams(ptr, reset bool) interface{} { +func (self *CmdSetAccountActions) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &utils.TPAccountActions{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdSetAccountActions) PostprocessRpcParams() error { diff --git a/console/accounts.go b/console/accounts.go index a4e2f32eb..79fdf6beb 100644 --- a/console/accounts.go +++ b/console/accounts.go @@ -49,14 +49,11 @@ func (self *CmdGetAccounts) RpcMethod() string { return self.rpcMethod } -func (self *CmdGetAccounts) RpcParams(ptr, reset bool) interface{} { +func (self *CmdGetAccounts) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &utils.AttrGetAccounts{Direction: "*out"} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdGetAccounts) PostprocessRpcParams() error { diff --git a/console/action_execute.go b/console/action_execute.go index f2f22da9c..15ee3838c 100644 --- a/console/action_execute.go +++ b/console/action_execute.go @@ -48,14 +48,11 @@ func (self *CmdExecuteAction) RpcMethod() string { return self.rpcMethod } -func (self *CmdExecuteAction) RpcParams(ptr, reset bool) interface{} { +func (self *CmdExecuteAction) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &utils.AttrExecuteAction{Direction: utils.OUT} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdExecuteAction) PostprocessRpcParams() error { diff --git a/console/active_sessions.go b/console/active_sessions.go index 87d4a941a..db3c16a3f 100644 --- a/console/active_sessions.go +++ b/console/active_sessions.go @@ -48,14 +48,11 @@ func (self *CmdActiveSessions) RpcMethod() string { return self.rpcMethod } -func (self *CmdActiveSessions) RpcParams(ptr, reset bool) interface{} { +func (self *CmdActiveSessions) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &utils.AttrGetSMASessions{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdActiveSessions) PostprocessRpcParams() error { diff --git a/console/balance_debit.go b/console/balance_debit.go index 1b1b5d79c..ab6f45ec8 100644 --- a/console/balance_debit.go +++ b/console/balance_debit.go @@ -48,14 +48,11 @@ func (self *CmdDebitBalance) RpcMethod() string { return self.rpcMethod } -func (self *CmdDebitBalance) RpcParams(ptr, reset bool) interface{} { +func (self *CmdDebitBalance) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &engine.CallDescriptor{Direction: "*out"} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdDebitBalance) PostprocessRpcParams() error { diff --git a/console/balance_set.go b/console/balance_set.go index d012fb05a..89f6a70c5 100644 --- a/console/balance_set.go +++ b/console/balance_set.go @@ -48,14 +48,11 @@ func (self *CmdAddBalance) RpcMethod() string { return self.rpcMethod } -func (self *CmdAddBalance) RpcParams(ptr, reset bool) interface{} { +func (self *CmdAddBalance) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &v1.AttrAddBalance{BalanceType: utils.MONETARY, Overwrite: false} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdAddBalance) PostprocessRpcParams() error { diff --git a/console/cache_age.go b/console/cache_age.go index 3e0177e37..e1bc27bf2 100644 --- a/console/cache_age.go +++ b/console/cache_age.go @@ -45,14 +45,11 @@ func (self *CmdGetCacheAge) RpcMethod() string { return self.rpcMethod } -func (self *CmdGetCacheAge) RpcParams(ptr, reset bool) interface{} { +func (self *CmdGetCacheAge) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &StringWrapper{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdGetCacheAge) PostprocessRpcParams() error { diff --git a/console/cache_reload.go b/console/cache_reload.go index 555ffc86a..14547be0f 100644 --- a/console/cache_reload.go +++ b/console/cache_reload.go @@ -46,14 +46,11 @@ func (self *CmdReloadCache) RpcMethod() string { return self.rpcMethod } -func (self *CmdReloadCache) RpcParams(ptr, reset bool) interface{} { +func (self *CmdReloadCache) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &utils.ApiReloadCache{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdReloadCache) PostprocessRpcParams() error { diff --git a/console/cache_stats.go b/console/cache_stats.go index f68d52a59..eef3be100 100644 --- a/console/cache_stats.go +++ b/console/cache_stats.go @@ -45,14 +45,11 @@ func (self *CmdGetCacheStats) RpcMethod() string { return self.rpcMethod } -func (self *CmdGetCacheStats) RpcParams(ptr, reset bool) interface{} { +func (self *CmdGetCacheStats) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &utils.AttrCacheStats{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdGetCacheStats) PostprocessRpcParams() error { diff --git a/console/callcost.go b/console/callcost.go index 6093dc19a..694c770ca 100644 --- a/console/callcost.go +++ b/console/callcost.go @@ -49,14 +49,11 @@ func (self *CmdGetCostDetails) RpcMethod() string { return self.rpcMethod } -func (self *CmdGetCostDetails) RpcParams(ptr, reset bool) interface{} { +func (self *CmdGetCostDetails) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &utils.AttrGetCallCost{RunId: utils.DEFAULT_RUNID} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdGetCostDetails) PostprocessRpcParams() error { diff --git a/console/cdrs_export.go b/console/cdrs_export.go index 7defe1451..194345f14 100644 --- a/console/cdrs_export.go +++ b/console/cdrs_export.go @@ -45,14 +45,11 @@ func (self *CmdExportCdrs) RpcMethod() string { return self.rpcMethod } -func (self *CmdExportCdrs) RpcParams(ptr, reset bool) interface{} { +func (self *CmdExportCdrs) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &utils.AttrExportCdrsToFile{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdExportCdrs) PostprocessRpcParams() error { diff --git a/console/cdrs_rem.go b/console/cdrs_rem.go index 5b3c097c4..628f2226c 100644 --- a/console/cdrs_rem.go +++ b/console/cdrs_rem.go @@ -45,14 +45,11 @@ func (self *CmdRemCdrs) RpcMethod() string { return self.rpcMethod } -func (self *CmdRemCdrs) RpcParams(ptr, reset bool) interface{} { +func (self *CmdRemCdrs) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &utils.AttrRemCdrs{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdRemCdrs) PostprocessRpcParams() error { diff --git a/console/cdrstats_metrics.go b/console/cdrstats_metrics.go index 9ae874cd9..4f94e25b8 100644 --- a/console/cdrstats_metrics.go +++ b/console/cdrstats_metrics.go @@ -45,14 +45,11 @@ func (self *CmdCdrStatsMetrics) RpcMethod() string { return self.rpcMethod } -func (self *CmdCdrStatsMetrics) RpcParams(ptr, reset bool) interface{} { +func (self *CmdCdrStatsMetrics) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &v1.AttrGetMetrics{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdCdrStatsMetrics) PostprocessRpcParams() error { diff --git a/console/cdrstats_queue.go b/console/cdrstats_queue.go index b58c4f7a9..f7db33737 100644 --- a/console/cdrstats_queue.go +++ b/console/cdrstats_queue.go @@ -44,14 +44,11 @@ func (self *CmdCdrStatsQueue) RpcMethod() string { return self.rpcMethod } -func (self *CmdCdrStatsQueue) RpcParams(ptr, reset bool) interface{} { +func (self *CmdCdrStatsQueue) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &StringWrapper{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdCdrStatsQueue) PostprocessRpcParams() error { diff --git a/console/cdrstats_queue_triggers.go b/console/cdrstats_queue_triggers.go index 0218515a0..d9f5d3dfb 100644 --- a/console/cdrstats_queue_triggers.go +++ b/console/cdrstats_queue_triggers.go @@ -44,14 +44,11 @@ func (self *CmdCdrStatsQueueTriggers) RpcMethod() string { return self.rpcMethod } -func (self *CmdCdrStatsQueueTriggers) RpcParams(ptr, reset bool) interface{} { +func (self *CmdCdrStatsQueueTriggers) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &StringWrapper{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdCdrStatsQueueTriggers) PostprocessRpcParams() error { diff --git a/console/cdrstats_queueids.go b/console/cdrstats_queueids.go index 288534c54..4427b0631 100644 --- a/console/cdrstats_queueids.go +++ b/console/cdrstats_queueids.go @@ -42,14 +42,11 @@ func (self *CmdCdrStatsQueueIds) RpcMethod() string { return self.rpcMethod } -func (self *CmdCdrStatsQueueIds) RpcParams(ptr, reset bool) interface{} { +func (self *CmdCdrStatsQueueIds) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &StringWrapper{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdCdrStatsQueueIds) PostprocessRpcParams() error { diff --git a/console/cdrstats_reload.go b/console/cdrstats_reload.go index 29143a2ce..01c59923c 100644 --- a/console/cdrstats_reload.go +++ b/console/cdrstats_reload.go @@ -47,14 +47,11 @@ func (self *CmdCdrReloadQueues) RpcMethod() string { return self.rpcMethod } -func (self *CmdCdrReloadQueues) RpcParams(ptr, reset bool) interface{} { +func (self *CmdCdrReloadQueues) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &utils.AttrCDRStatsReloadQueues{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdCdrReloadQueues) PostprocessRpcParams() error { diff --git a/console/cdrstats_reset.go b/console/cdrstats_reset.go index d2f942ae1..bb847b34b 100644 --- a/console/cdrstats_reset.go +++ b/console/cdrstats_reset.go @@ -45,14 +45,11 @@ func (self *CmdCdrResetQueues) RpcMethod() string { return self.rpcMethod } -func (self *CmdCdrResetQueues) RpcParams(ptr, reset bool) interface{} { +func (self *CmdCdrResetQueues) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &utils.AttrCDRStatsReloadQueues{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdCdrResetQueues) PostprocessRpcParams() error { diff --git a/console/command.go b/console/command.go index d7d192ba2..feb801808 100644 --- a/console/command.go +++ b/console/command.go @@ -33,7 +33,7 @@ type Commander interface { FromArgs(args string, verbose bool) error // Load data from os arguments or flag.Args() Usage() string // usage message RpcMethod() string // Method which should be called remotely - RpcParams(bool, bool) interface{} // Parameters to send out on rpc + RpcParams(bool) interface{} // Parameters to send out on rpc PostprocessRpcParams() error // Corrects rpc parameters when needed RpcResult() interface{} // Only requirement is to have a String method to print on console ClientArgs() []string // for autocompletion @@ -88,3 +88,5 @@ type StringWrapper struct { type StringSliceWrapper struct { Items []string } + +type EmptyWrapper struct{} diff --git a/console/command_executer.go b/console/command_executer.go index 4d7e2595d..97620f3bb 100644 --- a/console/command_executer.go +++ b/console/command_executer.go @@ -40,13 +40,13 @@ type CommandExecuter struct { } func (ce *CommandExecuter) Usage() string { - jsn, _ := json.Marshal(ce.command.RpcParams(true, true)) + jsn, _ := json.Marshal(ce.command.RpcParams(true)) return fmt.Sprintf("\n\tUsage: %s %s \n", ce.command.Name(), FromJSON(jsn, ce.command.ClientArgs())) } // Parses command line args and builds CmdBalance value func (ce *CommandExecuter) FromArgs(args string, verbose bool) error { - params := ce.command.RpcParams(true, true) + params := ce.command.RpcParams(true) if err := json.Unmarshal(ToJSON(args), params); err != nil { return err } @@ -59,6 +59,10 @@ func (ce *CommandExecuter) FromArgs(args string, verbose bool) error { func (ce *CommandExecuter) clientArgs(iface interface{}) (args []string) { val := reflect.ValueOf(iface) + if val.Kind() == reflect.Ptr { + val = val.Elem() + iface = val.Interface() + } typ := reflect.TypeOf(iface) for i := 0; i < typ.NumField(); i++ { valField := val.Field(i) @@ -74,7 +78,7 @@ func (ce *CommandExecuter) clientArgs(iface interface{}) (args []string) { } func (ce *CommandExecuter) ClientArgs() (args []string) { - return ce.clientArgs(ce.command.RpcParams(false, true)) + return ce.clientArgs(ce.command.RpcParams(true)) } // To be overwritten by commands that do not need a rpc call diff --git a/console/cost.go b/console/cost.go index ab60d04bc..3e07a6e2e 100644 --- a/console/cost.go +++ b/console/cost.go @@ -47,14 +47,11 @@ func (self *CmdGetCost) RpcMethod() string { return self.rpcMethod } -func (self *CmdGetCost) RpcParams(ptr, reset bool) interface{} { +func (self *CmdGetCost) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &engine.CallDescriptor{Direction: "*out"} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdGetCost) PostprocessRpcParams() error { diff --git a/console/datacost.go b/console/datacost.go index 6df827e07..d9bf0a54a 100644 --- a/console/datacost.go +++ b/console/datacost.go @@ -51,14 +51,11 @@ func (self *CmdGetDataCost) RpcMethod() string { return self.rpcMethod } -func (self *CmdGetDataCost) RpcParams(ptr, reset bool) interface{} { +func (self *CmdGetDataCost) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &v1.AttrGetDataCost{Direction: utils.OUT} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdGetDataCost) PostprocessRpcParams() error { diff --git a/console/destination.go b/console/destination.go index 9762081ba..1d80f1dee 100644 --- a/console/destination.go +++ b/console/destination.go @@ -45,14 +45,11 @@ func (self *CmdGetDestination) RpcMethod() string { return self.rpcMethod } -func (self *CmdGetDestination) RpcParams(ptr, reset bool) interface{} { +func (self *CmdGetDestination) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &StringWrapper{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdGetDestination) PostprocessRpcParams() error { diff --git a/console/destination_set.go b/console/destination_set.go index ed00b86b6..d6f045ebd 100644 --- a/console/destination_set.go +++ b/console/destination_set.go @@ -46,14 +46,11 @@ func (self *CmdSetDestination) RpcMethod() string { return self.rpcMethod } -func (self *CmdSetDestination) RpcParams(ptr, reset bool) interface{} { +func (self *CmdSetDestination) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &utils.AttrSetDestination{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdSetDestination) PostprocessRpcParams() error { diff --git a/console/lcr.go b/console/lcr.go index cbd2daeb4..711bcc9ef 100644 --- a/console/lcr.go +++ b/console/lcr.go @@ -48,14 +48,11 @@ func (self *CmdGetLcr) RpcMethod() string { return self.rpcMethod } -func (self *CmdGetLcr) RpcParams(ptr, reset bool) interface{} { +func (self *CmdGetLcr) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &engine.LcrRequest{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdGetLcr) PostprocessRpcParams() error { diff --git a/console/load_tp_from_folder.go b/console/load_tp_from_folder.go index 329e45318..c44220976 100644 --- a/console/load_tp_from_folder.go +++ b/console/load_tp_from_folder.go @@ -46,14 +46,11 @@ func (self *LoadTpFromFolder) RpcMethod() string { return self.rpcMethod } -func (self *LoadTpFromFolder) RpcParams(ptr, reset bool) interface{} { +func (self *LoadTpFromFolder) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &utils.AttrLoadTpFromFolder{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *LoadTpFromFolder) PostprocessRpcParams() error { diff --git a/console/load_tp_from_stordb.go b/console/load_tp_from_stordb.go index 0d2af8714..5d2c7a998 100644 --- a/console/load_tp_from_stordb.go +++ b/console/load_tp_from_stordb.go @@ -46,14 +46,11 @@ func (self *LoadTpFromStorDb) RpcMethod() string { return self.rpcMethod } -func (self *LoadTpFromStorDb) RpcParams(ptr, reset bool) interface{} { +func (self *LoadTpFromStorDb) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &v1.AttrLoadTpFromStorDb{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *LoadTpFromStorDb) PostprocessRpcParams() error { diff --git a/console/maxduration.go b/console/maxduration.go index 2e04868de..b20d5f8e0 100644 --- a/console/maxduration.go +++ b/console/maxduration.go @@ -47,14 +47,11 @@ func (self *CmdGetMaxDuration) RpcMethod() string { return self.rpcMethod } -func (self *CmdGetMaxDuration) RpcParams(ptr, reset bool) interface{} { +func (self *CmdGetMaxDuration) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &engine.CallDescriptor{Direction: "*out"} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdGetMaxDuration) PostprocessRpcParams() error { diff --git a/console/parse.go b/console/parse.go index 558d024b4..f7c5ede56 100644 --- a/console/parse.go +++ b/console/parse.go @@ -49,14 +49,11 @@ func (self *CmdParse) RpcMethod() string { return "" } -func (self *CmdParse) RpcParams(ptr, reset bool) interface{} { +func (self *CmdParse) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &AttrParse{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdParse) RpcResult() interface{} { diff --git a/console/publish.go b/console/publish.go index 41797a178..c46c68a82 100644 --- a/console/publish.go +++ b/console/publish.go @@ -44,14 +44,11 @@ func (self *CmdPublish) RpcMethod() string { return self.rpcMethod } -func (self *CmdPublish) RpcParams(ptr, reset bool) interface{} { +func (self *CmdPublish) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &engine.PublishInfo{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdPublish) PostprocessRpcParams() error { diff --git a/console/ratingprofile_set.go b/console/ratingprofile_set.go index 19c1597b8..0989bea58 100644 --- a/console/ratingprofile_set.go +++ b/console/ratingprofile_set.go @@ -46,14 +46,11 @@ func (self *CmdSetRatingProfile) RpcMethod() string { return self.rpcMethod } -func (self *CmdSetRatingProfile) RpcParams(ptr, reset bool) interface{} { +func (self *CmdSetRatingProfile) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &utils.TPRatingProfile{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdSetRatingProfile) PostprocessRpcParams() error { diff --git a/console/scheduler_reload.go b/console/scheduler_reload.go index b9fa8a11e..a5a1c687c 100644 --- a/console/scheduler_reload.go +++ b/console/scheduler_reload.go @@ -43,14 +43,11 @@ func (self *CmdReloadScheduler) RpcMethod() string { return self.rpcMethod } -func (self *CmdReloadScheduler) RpcParams(ptr, reset bool) interface{} { +func (self *CmdReloadScheduler) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &StringWrapper{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdReloadScheduler) PostprocessRpcParams() error { diff --git a/console/sharedgroup.go b/console/sharedgroup.go index 5ed688fc0..32b64fc22 100644 --- a/console/sharedgroup.go +++ b/console/sharedgroup.go @@ -45,14 +45,11 @@ func (self *CmdGetSharedGroup) RpcMethod() string { return self.rpcMethod } -func (self *CmdGetSharedGroup) RpcParams(ptr, reset bool) interface{} { +func (self *CmdGetSharedGroup) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &StringWrapper{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdGetSharedGroup) PostprocessRpcParams() error { diff --git a/console/status.go b/console/status.go index efa15a8ce..191aa1966 100644 --- a/console/status.go +++ b/console/status.go @@ -30,7 +30,7 @@ func init() { type CmdStatus struct { name string rpcMethod string - rpcParams *StringWrapper + rpcParams *EmptyWrapper *CommandExecuter } @@ -42,14 +42,11 @@ func (self *CmdStatus) RpcMethod() string { return self.rpcMethod } -func (self *CmdStatus) RpcParams(ptr, reset bool) interface{} { +func (self *CmdStatus) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { - self.rpcParams = &StringWrapper{} + self.rpcParams = &EmptyWrapper{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdStatus) PostprocessRpcParams() error { diff --git a/console/subscribe.go b/console/subscribe.go index 25c8f3e42..cb71edabc 100644 --- a/console/subscribe.go +++ b/console/subscribe.go @@ -44,14 +44,11 @@ func (self *CmdSubscribe) RpcMethod() string { return self.rpcMethod } -func (self *CmdSubscribe) RpcParams(ptr, reset bool) interface{} { +func (self *CmdSubscribe) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &engine.SubscribeInfo{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdSubscribe) PostprocessRpcParams() error { diff --git a/console/subscribers.go b/console/subscribers.go index 4a37d0496..505ec1c77 100644 --- a/console/subscribers.go +++ b/console/subscribers.go @@ -44,14 +44,11 @@ func (self *CmdShowSubscribers) RpcMethod() string { return self.rpcMethod } -func (self *CmdShowSubscribers) RpcParams(ptr, reset bool) interface{} { +func (self *CmdShowSubscribers) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &StringWrapper{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdShowSubscribers) PostprocessRpcParams() error { diff --git a/console/triggeredaction_add.go b/console/triggeredaction_add.go index 122c40901..298782b6c 100644 --- a/console/triggeredaction_add.go +++ b/console/triggeredaction_add.go @@ -45,14 +45,11 @@ func (self *CmdAddTriggeredAction) RpcMethod() string { return self.rpcMethod } -func (self *CmdAddTriggeredAction) RpcParams(ptr, reset bool) interface{} { +func (self *CmdAddTriggeredAction) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &v1.AttrAddActionTrigger{BalanceDirection: "*out"} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdAddTriggeredAction) PostprocessRpcParams() error { diff --git a/console/unsubscribe.go b/console/unsubscribe.go index 806922388..0ebc534ea 100644 --- a/console/unsubscribe.go +++ b/console/unsubscribe.go @@ -44,14 +44,11 @@ func (self *CmdUnsubscribe) RpcMethod() string { return self.rpcMethod } -func (self *CmdUnsubscribe) RpcParams(ptr, reset bool) interface{} { +func (self *CmdUnsubscribe) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &engine.SubscribeInfo{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdUnsubscribe) PostprocessRpcParams() error { diff --git a/console/user_addindex.go b/console/user_addindex.go index d0408340a..c0b660e93 100644 --- a/console/user_addindex.go +++ b/console/user_addindex.go @@ -43,14 +43,11 @@ func (self *CmdUserAddIndex) RpcMethod() string { return self.rpcMethod } -func (self *CmdUserAddIndex) RpcParams(ptr, reset bool) interface{} { +func (self *CmdUserAddIndex) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &StringSliceWrapper{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdUserAddIndex) PostprocessRpcParams() error { diff --git a/console/user_indexes.go b/console/user_indexes.go index 547e67381..6a713044a 100644 --- a/console/user_indexes.go +++ b/console/user_indexes.go @@ -31,7 +31,7 @@ func init() { type CmdUserShowIndexes struct { name string rpcMethod string - rpcParams *StringWrapper + rpcParams *EmptyWrapper *CommandExecuter } @@ -43,14 +43,11 @@ func (self *CmdUserShowIndexes) RpcMethod() string { return self.rpcMethod } -func (self *CmdUserShowIndexes) RpcParams(ptr, reset bool) interface{} { +func (self *CmdUserShowIndexes) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { - self.rpcParams = &StringWrapper{} + self.rpcParams = &EmptyWrapper{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdUserShowIndexes) PostprocessRpcParams() error { diff --git a/console/user_remove.go b/console/user_remove.go index 8e8658e81..f0a0a3aec 100644 --- a/console/user_remove.go +++ b/console/user_remove.go @@ -45,14 +45,11 @@ func (self *CmdUserRemove) RpcMethod() string { return self.rpcMethod } -func (self *CmdUserRemove) RpcParams(ptr, reset bool) interface{} { +func (self *CmdUserRemove) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &engine.UserProfile{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdUserRemove) PostprocessRpcParams() error { diff --git a/console/user_set.go b/console/user_set.go index e531fe8e3..39cd8239f 100644 --- a/console/user_set.go +++ b/console/user_set.go @@ -45,14 +45,11 @@ func (self *CmdSetUser) RpcMethod() string { return self.rpcMethod } -func (self *CmdSetUser) RpcParams(ptr, reset bool) interface{} { +func (self *CmdSetUser) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &engine.UserProfile{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdSetUser) PostprocessRpcParams() error { diff --git a/console/user_update.go b/console/user_update.go index 908b54376..ef80a4f27 100644 --- a/console/user_update.go +++ b/console/user_update.go @@ -45,14 +45,11 @@ func (self *CmdUpdateUser) RpcMethod() string { return self.rpcMethod } -func (self *CmdUpdateUser) RpcParams(ptr, reset bool) interface{} { +func (self *CmdUpdateUser) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &engine.UserProfile{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdUpdateUser) PostprocessRpcParams() error { diff --git a/console/users.go b/console/users.go index 89492d7f0..28da13968 100644 --- a/console/users.go +++ b/console/users.go @@ -46,14 +46,11 @@ func (self *CmdGetUsers) RpcMethod() string { return self.rpcMethod } -func (self *CmdGetUsers) RpcParams(ptr, reset bool) interface{} { +func (self *CmdGetUsers) RpcParams(reset bool) interface{} { if reset || self.rpcParams == nil { self.rpcParams = &engine.UserProfile{} } - if ptr { - return self.rpcParams - } - return *self.rpcParams + return self.rpcParams } func (self *CmdGetUsers) PostprocessRpcParams() error { diff --git a/engine/users.go b/engine/users.go index 95f7a2d9d..35cd6a509 100644 --- a/engine/users.go +++ b/engine/users.go @@ -1,6 +1,7 @@ package engine import ( + "reflect" "strings" "github.com/cgrates/cgrates/utils" @@ -318,3 +319,27 @@ func (ps *ProxyUserService) AddIndex(indexes []string, reply *string) error { func (ps *ProxyUserService) GetIndexes(in string, reply *map[string][]string) error { return ps.Client.Call("UsersV1.AddIndex", in, reply) } + +func ToMapStringString(in interface{}) (map[string]string, error) { + out := make(map[string]string) + + v := reflect.ValueOf(in) + if v.Kind() == reflect.Ptr { + v = v.Elem() + in = v.Interface() + } + typ := reflect.TypeOf(in) + for i := 0; i < v.NumField(); i++ { + // gets us a StructField + field := typ.Field(i) + typField := v.Field(i) + switch typField.Kind() { + case reflect.String: + val := v.Field(i).String() + if val != "" { + out[field.Name] = val + } + } + } + return out, nil +}