mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-17 14:19:54 +05:00
Added *unixtime dataconverter
This commit is contained in:
committed by
Dan Christian Bogos
parent
db582797d3
commit
327921bdad
@@ -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
|
||||
|
||||
|
||||
@@ -759,6 +759,7 @@ const (
|
||||
MetaTimeString = "*time_string"
|
||||
MetaIP2Hex = "*ip2hex"
|
||||
MetaString2Hex = "*string2hex"
|
||||
MetaUnixTime = "*unixtime"
|
||||
MetaSIPURIMethod = "*sipuri_method"
|
||||
MetaSIPURIHost = "*sipuri_host"
|
||||
MetaSIPURIUser = "*sipuri_user"
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user