From 9494fc6e5e891eac90ee222343c7d1ebee866d06 Mon Sep 17 00:00:00 2001 From: ionutboangiu Date: Fri, 9 Feb 2024 09:50:20 -0500 Subject: [PATCH] Implement PrepareMap methods for virtual EE --- ees/virtualee.go | 37 +++++++++++++++++++++++++++++-------- ees/virtualee_test.go | 7 ++++++- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/ees/virtualee.go b/ees/virtualee.go index 68a874e53..36424c354 100644 --- a/ees/virtualee.go +++ b/ees/virtualee.go @@ -19,6 +19,9 @@ along with this program. If not, see package ees import ( + "fmt" + "strings" + "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/utils" ) @@ -36,12 +39,30 @@ type VirtualEE struct { dc *utils.SafeMapStorage } -func (vEe *VirtualEE) Cfg() *config.EventExporterCfg { return vEe.cfg } -func (vEe *VirtualEE) Connect() error { return nil } -func (vEe *VirtualEE) ExportEvent(any, string) error { return nil } -func (vEe *VirtualEE) Close() error { return nil } -func (vEe *VirtualEE) GetMetrics() *utils.SafeMapStorage { return vEe.dc } -func (vEe *VirtualEE) PrepareMap(*utils.CGREvent) (any, error) { return nil, nil } -func (vEe *VirtualEE) PrepareOrderMap(*utils.OrderedNavigableMap) (any, error) { - return nil, nil +func (vEe *VirtualEE) Cfg() *config.EventExporterCfg { return vEe.cfg } +func (vEe *VirtualEE) Connect() error { return nil } + +func (vEe *VirtualEE) ExportEvent(payload any, _ string) error { + utils.Logger.Info( + fmt.Sprintf("<%s> <%s> exported: <%s>", + utils.EEs, vEe.Cfg().ID, utils.ToJSON(payload))) + return nil +} + +func (vEe *VirtualEE) Close() error { return nil } +func (vEe *VirtualEE) GetMetrics() *utils.SafeMapStorage { return vEe.dc } + +func (vEe *VirtualEE) PrepareMap(cgrEv *utils.CGREvent) (any, error) { + return cgrEv.Event, nil +} + +func (vEe *VirtualEE) PrepareOrderMap(onm *utils.OrderedNavigableMap) (any, error) { + preparedMap := make(map[string]any) + for el := onm.GetFirstElement(); el != nil; el = el.Next() { + path := el.Value + item, _ := onm.Field(path) + path = path[:len(path)-1] // remove the last index + preparedMap[strings.Join(path, utils.NestingSep)] = item.String() + } + return preparedMap, nil } diff --git a/ees/virtualee_test.go b/ees/virtualee_test.go index 95d9ac56e..71d90ee1c 100644 --- a/ees/virtualee_test.go +++ b/ees/virtualee_test.go @@ -22,6 +22,7 @@ import ( "reflect" "testing" + "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/utils" ) @@ -39,7 +40,11 @@ func TestVirtualEeGetMetrics(t *testing.T) { } } func TestVirtualEeExportEvent(t *testing.T) { - vEe := &VirtualEE{} + vEe := &VirtualEE{ + cfg: &config.EventExporterCfg{ + ID: "testEE", + }, + } if err := vEe.ExportEvent([]byte{}, ""); err != nil { t.Error(err) }