From d4b8bb96d29e557db7bd1e8b79efc2f2ddc23808 Mon Sep 17 00:00:00 2001 From: DanB Date: Tue, 9 Jun 2015 19:19:26 +0200 Subject: [PATCH] CDRC to support supplier, disconnect_cause and pdd as primary fields --- cdrc/cdrc.go | 8 ++++++++ cdrc/cdrc_test.go | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/cdrc/cdrc.go b/cdrc/cdrc.go index 0d988cfc3..1b3b5189a 100644 --- a/cdrc/cdrc.go +++ b/cdrc/cdrc.go @@ -67,6 +67,10 @@ func populateStoredCdrField(cdr *engine.StoredCdr, fieldId, fieldVal string) err if cdr.SetupTime, err = utils.ParseTimeDetectLayout(fieldVal); err != nil { return fmt.Errorf("Cannot parse answer time field with value: %s, err: %s", fieldVal, err.Error()) } + case utils.PDD: + if cdr.Pdd, err = utils.ParseDurationWithSecs(fieldVal); err != nil { + return fmt.Errorf("Cannot parse answer time field with value: %s, err: %s", fieldVal, err.Error()) + } case utils.ANSWER_TIME: if cdr.AnswerTime, err = utils.ParseTimeDetectLayout(fieldVal); err != nil { return fmt.Errorf("Cannot parse answer time field with value: %s, err: %s", fieldVal, err.Error()) @@ -75,6 +79,10 @@ func populateStoredCdrField(cdr *engine.StoredCdr, fieldId, fieldVal string) err if cdr.Usage, err = utils.ParseDurationWithSecs(fieldVal); err != nil { return fmt.Errorf("Cannot parse duration field with value: %s, err: %s", fieldVal, err.Error()) } + case utils.SUPPLIER: + cdr.Supplier = fieldVal + case utils.DISCONNECT_CAUSE: + cdr.DisconnectCause = fieldVal default: // Extra fields will not match predefined so they all show up here cdr.ExtraFields[fieldId] = fieldVal } diff --git a/cdrc/cdrc_test.go b/cdrc/cdrc_test.go index 0a19b16ae..3df10de4f 100644 --- a/cdrc/cdrc_test.go +++ b/cdrc/cdrc_test.go @@ -60,7 +60,8 @@ func TestRecordForkCdr(t *testing.T) { SetupTime: time.Date(2013, 2, 3, 19, 50, 0, 0, time.UTC), AnswerTime: time.Date(2013, 2, 3, 19, 54, 0, 0, time.UTC), Usage: time.Duration(62) * time.Second, - ExtraFields: map[string]string{"supplier": "supplier1"}, + Supplier: "supplier1", + ExtraFields: map[string]string{}, Cost: -1, } if !reflect.DeepEqual(expectedCdr, rtCdr) {