From d829b17745e511001a6fae26f1919096bcace2f3 Mon Sep 17 00:00:00 2001 From: TeoV Date: Mon, 16 Jul 2018 07:59:35 -0400 Subject: [PATCH] ChargerS.processEvent to return []*AttrSProcessEventReply --- apier/v1/chargers.go | 2 +- apier/v1/chargers_it_test.go | 24 ++++++++++++++---------- apier/v1/dispatcher.go | 3 +-- dispatcher/chargers.go | 2 +- engine/chargers.go | 24 ++++++++++-------------- 5 files changed, 27 insertions(+), 28 deletions(-) diff --git a/apier/v1/chargers.go b/apier/v1/chargers.go index 6cb74da8c..b39c52f45 100644 --- a/apier/v1/chargers.go +++ b/apier/v1/chargers.go @@ -95,6 +95,6 @@ func (cSv1 *ChargerSv1) GetChargersForEvent(cgrEv *utils.CGREvent, // ProcessEvent func (cSv1 *ChargerSv1) ProcessEvent(args *utils.CGREvent, - reply *[]*utils.CGREvent) error { + reply *[]*engine.AttrSProcessEventReply) error { return cSv1.cS.V1ProcessEvent(args, reply) } diff --git a/apier/v1/chargers_it_test.go b/apier/v1/chargers_it_test.go index 2182a1ab7..11782e876 100755 --- a/apier/v1/chargers_it_test.go +++ b/apier/v1/chargers_it_test.go @@ -173,19 +173,23 @@ func testChargerSGetChargersForEvent(t *testing.T) { } func testChargerSProcessEvent(t *testing.T) { - processedEv := &[]*utils.CGREvent{ - &utils.CGREvent{ // matching Charger1 - Tenant: "cgrates.org", - ID: "event1", - Context: utils.StringPointer(utils.MetaChargers), - Event: map[string]interface{}{ - utils.Account: "1001", - "Password": "CGRateS.org", - "RunID": "*rated", + processedEv := &[]*engine.AttrSProcessEventReply{ + &engine.AttrSProcessEventReply{ + MatchedProfile: "ATTR_1001_SIMPLEAUTH", + AlteredFields: []string{"Password"}, + CGREvent: &utils.CGREvent{ // matching Charger1 + Tenant: "cgrates.org", + ID: "event1", + Context: utils.StringPointer(utils.MetaChargers), + Event: map[string]interface{}{ + utils.Account: "1001", + "Password": "CGRateS.org", + "RunID": "*rated", + }, }, }, } - var result *[]*utils.CGREvent + var result *[]*engine.AttrSProcessEventReply if err := chargerRPC.Call(utils.ChargerSv1ProcessEvent, chargerEvent[1], &result); err == nil || err.Error() != utils.ErrNotFound.Error() { t.Error(err) diff --git a/apier/v1/dispatcher.go b/apier/v1/dispatcher.go index e6dcf3f57..5be198e6f 100755 --- a/apier/v1/dispatcher.go +++ b/apier/v1/dispatcher.go @@ -22,7 +22,6 @@ import ( "github.com/cgrates/cgrates/dispatcher" "github.com/cgrates/cgrates/engine" "github.com/cgrates/cgrates/sessions" - "github.com/cgrates/cgrates/utils" ) func NewDispatcherThresholdSv1(dps *dispatcher.DispatcherService) *DispatcherThresholdSv1 { @@ -219,6 +218,6 @@ func (dC *DispatcherChargerSv1) GetChargersForEvent(args *dispatcher.CGREvWithAp // ProcessEvent implements ChargerSv1ProcessEvent func (dC *DispatcherChargerSv1) ProcessEvent(args *dispatcher.CGREvWithApiKey, - reply *[]*utils.CGREvent) (err error) { + reply *[]*engine.AttrSProcessEventReply) (err error) { return dC.dC.ChargerSv1ProcessEvent(args, reply) } diff --git a/dispatcher/chargers.go b/dispatcher/chargers.go index a0e3828ba..0bfa5f9a2 100755 --- a/dispatcher/chargers.go +++ b/dispatcher/chargers.go @@ -43,7 +43,7 @@ func (dS *DispatcherService) ChargerSv1GetChargersForEvent(args *CGREvWithApiKey } func (dS *DispatcherService) ChargerSv1ProcessEvent(args *CGREvWithApiKey, - reply *[]*utils.CGREvent) (err error) { + reply *[]*engine.AttrSProcessEventReply) (err error) { if dS.chargerS == nil { return utils.NewErrNotConnected(utils.ChargerS) } diff --git a/engine/chargers.go b/engine/chargers.go index eb1e73b88..d313a33cf 100644 --- a/engine/chargers.go +++ b/engine/chargers.go @@ -96,31 +96,27 @@ func (cS *ChargerService) matchingChargerProfilesForEvent(cgrEv *utils.CGREvent) return } -func (cS *ChargerService) processEvent(cgrEv *utils.CGREvent) (cgrEvs []*utils.CGREvent, err error) { +func (cS *ChargerService) processEvent(cgrEv *utils.CGREvent) (rply []*AttrSProcessEventReply, err error) { var cPs ChargerProfiles if cPs, err = cS.matchingChargerProfilesForEvent(cgrEv); err != nil { return nil, err } - cgrEvs = make([]*utils.CGREvent, len(cPs)) - for i, cP := range cPs { - cgrEvs[i] = cgrEv.Clone() - cgrEvs[i].Event[utils.RunID] = cP.RunID + for _, cP := range cPs { + cgrEv.Event[utils.RunID] = cP.RunID if len(cP.AttributeIDs) != 0 { // Attributes should process the event if cS.attrS == nil { return nil, errors.New("no connection to AttributeS") } - if cgrEvs[i].Context == nil { - cgrEvs[i].Context = utils.StringPointer(utils.MetaChargers) + if cgrEv.Context == nil { + cgrEv.Context = utils.StringPointer(utils.MetaChargers) } - var rply AttrSProcessEventReply + var evRply AttrSProcessEventReply if err = cS.attrS.Call(utils.AttributeSv1ProcessEvent, - &AttrArgsProcessEvent{cP.AttributeIDs, *cgrEvs[i]}, - &rply); err != nil { + &AttrArgsProcessEvent{cP.AttributeIDs, *cgrEv}, + &evRply); err != nil { return nil, err } - if len(rply.AlteredFields) != 0 { - cgrEvs[i] = rply.CGREvent // modified event by attributeS - } + rply = append(rply, &evRply) } } return @@ -128,7 +124,7 @@ func (cS *ChargerService) processEvent(cgrEv *utils.CGREvent) (cgrEvs []*utils.C // V1ProcessEvent will process the event received via API and return list of events forked func (cS *ChargerService) V1ProcessEvent(args *utils.CGREvent, - reply *[]*utils.CGREvent) (err error) { + reply *[]*AttrSProcessEventReply) (err error) { if args.Event == nil { return utils.NewErrMandatoryIeMissing("Event") }