mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-14 12:49:54 +05:00
Add Layout optional for SetupTime/AnswerTime for CDR
This commit is contained in:
committed by
Dan Christian Bogos
parent
2afcae57e0
commit
a5f9be607e
@@ -331,9 +331,17 @@ func (cdr *CDR) exportFieldValue(cfgCdrFld *config.FCTemplate, filterS *FilterS)
|
||||
cdrVal = cdr.FormatCost(cfgCdrFld.CostShiftDigits,
|
||||
cfgCdrFld.RoundingDecimals)
|
||||
case utils.SetupTime:
|
||||
cdrVal = cdr.SetupTime.Format(cfgCdrFld.Layout)
|
||||
if cfgCdrFld.Layout == "" {
|
||||
cdrVal = cdr.SetupTime.Format(time.RFC3339)
|
||||
} else {
|
||||
cdrVal = cdr.SetupTime.Format(cfgCdrFld.Layout)
|
||||
}
|
||||
case utils.AnswerTime: // Format time based on layout
|
||||
cdrVal = cdr.AnswerTime.Format(cfgCdrFld.Layout)
|
||||
if cfgCdrFld.Layout == "" {
|
||||
cdrVal = cdr.AnswerTime.Format(time.RFC3339)
|
||||
} else {
|
||||
cdrVal = cdr.AnswerTime.Format(cfgCdrFld.Layout)
|
||||
}
|
||||
case utils.Destination:
|
||||
cdrVal, err = cdr.FieldAsString(rsrFld)
|
||||
if err != nil {
|
||||
@@ -356,10 +364,6 @@ func (cdr *CDR) exportFieldValue(cfgCdrFld *config.FCTemplate, filterS *FilterS)
|
||||
|
||||
func (cdr *CDR) formatField(cfgFld *config.FCTemplate, httpSkipTlsCheck bool,
|
||||
groupedCDRs []*CDR, filterS *FilterS) (outVal string, err error) {
|
||||
layout := cfgFld.Layout
|
||||
if layout == "" {
|
||||
layout = time.RFC3339
|
||||
}
|
||||
switch cfgFld.Type {
|
||||
case utils.META_FILLER:
|
||||
outVal, err = cfgFld.Value.ParseValue(utils.EmptyString)
|
||||
@@ -374,7 +378,11 @@ func (cdr *CDR) formatField(cfgFld *config.FCTemplate, httpSkipTlsCheck bool,
|
||||
if dtFld, err := utils.ParseTimeDetectLayout(rawVal, cfgFld.Timezone); err != nil { // Only one rule makes sense here
|
||||
return "", err
|
||||
} else {
|
||||
outVal = dtFld.Format(layout)
|
||||
if cfgFld.Layout == "" {
|
||||
outVal = dtFld.Format(time.RFC3339)
|
||||
} else {
|
||||
outVal = dtFld.Format(cfgFld.Layout)
|
||||
}
|
||||
}
|
||||
case utils.META_HTTP_POST:
|
||||
var outValByte []byte
|
||||
|
||||
@@ -1032,3 +1032,37 @@ func TestCDRAddDefaults(t *testing.T) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", eCDR, cdr)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCDRexportFieldValue(t *testing.T) {
|
||||
cdr := &CDR{
|
||||
CGRID: utils.Sha1("dsafdsaf", time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC).String()),
|
||||
OrderID: 123,
|
||||
ToR: utils.VOICE,
|
||||
OriginID: "dsafdsaf",
|
||||
OriginHost: "192.168.1.1",
|
||||
Source: utils.UNIT_TEST,
|
||||
RequestType: utils.META_RATED,
|
||||
Tenant: "cgrates.org",
|
||||
Category: "call",
|
||||
Account: "1001",
|
||||
Subject: "1001",
|
||||
Destination: "+4986517174963",
|
||||
SetupTime: time.Date(2013, 11, 7, 8, 42, 20, 0, time.UTC),
|
||||
AnswerTime: time.Date(2013, 11, 7, 8, 42, 26, 0, time.UTC),
|
||||
RunID: utils.DEFAULT_RUNID,
|
||||
Usage: time.Duration(10) * time.Second,
|
||||
Cost: 1.01,
|
||||
ExtraFields: map[string]string{"field_extr1": "val_extr1", "fieldextr2": "valextr2"},
|
||||
}
|
||||
|
||||
cfgCdrFld := &config.FCTemplate{Tag: "SetupTime", Type: utils.META_COMPOSED,
|
||||
Value: config.NewRSRParsersMustCompile("~SetupTime", true, utils.INFIELD_SEP)}
|
||||
|
||||
eVal := "2013-11-07T08:42:20Z"
|
||||
if val, err := cdr.exportFieldValue(cfgCdrFld, nil); err != nil {
|
||||
t.Error(err)
|
||||
} else if val != eVal {
|
||||
t.Errorf("Expecting: %+v, received: %+v", eVal, val)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user