Added *unixtime dataconverter

This commit is contained in:
Trial97
2020-10-07 18:19:07 +03:00
committed by Dan Christian Bogos
parent db582797d3
commit 327921bdad
4 changed files with 40 additions and 0 deletions

View File

@@ -107,6 +107,7 @@ cgrates (0.11.0~dev) UNRELEASED; urgency=medium
* [AttributeS] Add support for adding fields from other places that event (e.g. Resource.TotalUsage, Stat.MetricName, Account.Balance)
* [EEs] Empty fields in exporter config will export the full event for the exporters that use json format
* [DynamicDP] Add support for *libphonenumber prefix
* [Templates] Added new dataconverter: *unixtime
-- DanB <danb@cgrates.org> Wed, 19 Feb 2020 13:25:52 +0200

View File

@@ -759,6 +759,7 @@ const (
MetaTimeString = "*time_string"
MetaIP2Hex = "*ip2hex"
MetaString2Hex = "*string2hex"
MetaUnixTime = "*unixtime"
MetaSIPURIMethod = "*sipuri_method"
MetaSIPURIHost = "*sipuri_host"
MetaSIPURIUser = "*sipuri_user"

View File

@@ -84,6 +84,8 @@ func NewDataConverter(params string) (conv DataConverter, err error) {
return new(SIPURIUserConverter), nil
case params == MetaSIPURIMethod:
return new(SIPURIMethodConverter), nil
case params == MetaUnixTime:
return new(UnixTimeConverter), nil
case strings.HasPrefix(params, MetaLibPhoneNumber):
if len(params) == len(MetaLibPhoneNumber) {
return NewPhoneNumberConverter("")
@@ -351,6 +353,7 @@ type TimeStringConverter struct {
Layout string
}
// Convert implements DataConverter interface
func (tS *TimeStringConverter) Convert(in interface{}) (
out interface{}, err error) {
tm, err := ParseTimeDetectLayout(in.(string), EmptyString)
@@ -373,3 +376,17 @@ func (*String2HexConverter) Convert(in interface{}) (o interface{}, err error) {
o = "0x" + out
return
}
// UnixTimeConverter converts the interface in the unix time
type UnixTimeConverter struct{}
// Convert implements DataConverter interface
func (tS *UnixTimeConverter) Convert(in interface{}) (
out interface{}, err error) {
var tm time.Time
if tm, err = ParseTimeDetectLayout(in.(string), EmptyString); err != nil {
return
}
out = tm.Unix()
return
}

View File

@@ -852,3 +852,24 @@ func TestStringHexConvertor(t *testing.T) {
t.Errorf("expecting: %+v, received: %+v", expected, rpl)
}
}
func TestUnixTimeConverter(t *testing.T) {
exp := new(UnixTimeConverter)
cnv, err := NewDataConverter(MetaUnixTime)
if err != nil {
t.Fatal(err)
}
if !reflect.DeepEqual(exp, cnv) {
t.Errorf("Expecting: %+v, received: %+v", exp, cnv)
}
expected := int64(1436280728)
if rcv, err := cnv.Convert("2015-07-07T14:52:08Z"); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(expected, rcv) {
t.Errorf("Expecting: %+v, received: %+v", expected, rcv)
}
if _, err := cnv.Convert("NotAValidTime"); err == nil {
t.Errorf("Expected error received %v", err)
}
}