mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-15 13:19:53 +05:00
renamed *localtime dataconverter to *timestring
This commit is contained in:
committed by
Dan Christian Bogos
parent
2b0bc6761c
commit
dd56a471e7
@@ -137,7 +137,7 @@
|
||||
{"tag": "DistributorCode", "path": "*hdr.DistributorCode",
|
||||
"type": "*constant", "value": "VOI","width": 3},
|
||||
{"tag": "FileCreationTime", "path": "*hdr.FileCreationTime",
|
||||
"type": "*variable","value":"~*em.TimeNow{*time_string:020106150400}",
|
||||
"type": "*variable","value":"~*em.TimeNow{*timestring::020106150400}",
|
||||
"width": 12 },
|
||||
{"tag": "FileVersion", "path": "*hdr.FileVersion", "type": "*constant",
|
||||
"value": "01","width": 2},
|
||||
@@ -158,7 +158,7 @@
|
||||
{"tag": "SubtypeTOR", "path": "*exp.SubtypeTOR", "type": "*constant", "value": "11",
|
||||
"width": 4, "padding": "*right"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable",
|
||||
"value": "~*req.SetupTime{*time_string:020106150400}", "width": 12, "padding": "*right","strip": "*right"},
|
||||
"value": "~*req.SetupTime{*timestring::020106150400}", "width": 12, "padding": "*right","strip": "*right"},
|
||||
{"tag": "Duration", "path": "*exp.Duration", "type": "*variable", "value": "~*req.Usage",
|
||||
"width": 6, "strip": "*right","padding": "*right","layout": "seconds"},
|
||||
{"tag": "DataVolume", "path": "*exp.DataVolume", "type": "*filler","width": 6},
|
||||
@@ -189,9 +189,9 @@
|
||||
{"tag": "CdrsDuration", "path": "*trl.CdrsDuration", "type": "*variable",
|
||||
"value": "~*em.TotalDuration","width": 8,"padding":"*zeroleft","layout": "seconds"},
|
||||
{"tag": "FirstCdrTime", "path": "*trl.FirstCdrTime", "type": "*variable",
|
||||
"value": "~*em.FirstEventATime{*time_string:020106150400}", "width": 12},
|
||||
"value": "~*em.FirstEventATime{*timestring::020106150400}", "width": 12},
|
||||
{"tag": "LastCdrTime", "path": "*hdr.LastCdrTime", "type": "*variable",
|
||||
"value": "~*em.LastEventATime{*time_string:020106150400}", "width": 12,},
|
||||
"value": "~*em.LastEventATime{*timestring::020106150400}", "width": 12,},
|
||||
{"tag": "Filler2", "path": "*trl.Filler2", "type": "*filler",
|
||||
"width": 93}
|
||||
],
|
||||
|
||||
@@ -79,8 +79,8 @@
|
||||
{"tag": "Account", "path": "*exp.Account", "type": "*variable", "value": "~*req.Account"},
|
||||
{"tag": "Subject", "path": "*exp.Subject", "type": "*variable", "value": "~*req.Subject"},
|
||||
{"tag": "Destination", "path": "*exp.Destination", "type": "*variable", "value": "~*req.Destination"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*time_string}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*time_string}"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*timestring}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*timestring}"},
|
||||
{"tag": "Usage", "path": "*exp.Usage", "type": "*variable", "value": "~*req.Usage{*duration_seconds}"},
|
||||
{"tag": "Cost", "path": "*exp.Cost", "type": "*variable", "value": "~*req.Cost{*round:4}"},
|
||||
],
|
||||
@@ -105,8 +105,8 @@
|
||||
{"tag": "Account", "path": "*exp.Account", "type": "*variable", "value": "~*req.Account"},
|
||||
{"tag": "Subject", "path": "*exp.Subject", "type": "*variable", "value": "~*req.Subject"},
|
||||
{"tag": "Destination", "path": "*exp.Destination", "type": "*variable", "value": "~*req.Destination"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*time_string}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*time_string}"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*timestring}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*timestring}"},
|
||||
{"tag": "Usage", "path": "*exp.Usage", "type": "*variable", "value": "~*req.Usage{*duration_seconds}"},
|
||||
{"tag": "Cost", "path": "*exp.Cost", "type": "*variable", "value": "~*req.Cost{*round:4}"},
|
||||
],
|
||||
@@ -131,8 +131,8 @@
|
||||
{"tag": "Account", "path": "*exp.Account", "type": "*variable", "value": "~*req.Account"},
|
||||
{"tag": "Subject", "path": "*exp.Subject", "type": "*variable", "value": "~*req.Subject"},
|
||||
{"tag": "Destination", "path": "*exp.Destination", "type": "*variable", "value": "~*req.Destination"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*time_string}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*time_string}"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*timestring}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*timestring}"},
|
||||
{"tag": "Usage", "path": "*exp.Usage", "type": "*variable", "value": "~*req.Usage{*duration_seconds}"},
|
||||
{"tag": "Cost", "path": "*exp.Cost", "type": "*variable", "value": "~*req.Cost{*round:4}"},
|
||||
],
|
||||
|
||||
@@ -84,8 +84,8 @@
|
||||
{"tag": "Account", "path": "*exp.Account", "type": "*variable", "value": "~*req.Account"},
|
||||
{"tag": "Subject", "path": "*exp.Subject", "type": "*variable", "value": "~*req.Subject"},
|
||||
{"tag": "Destination", "path": "*exp.Destination", "type": "*variable", "value": "~*req.Destination"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*time_string}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*time_string}"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*timestring}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*timestring}"},
|
||||
{"tag": "Usage", "path": "*exp.Usage", "type": "*variable", "value": "~*req.Usage{*duration_seconds}"},
|
||||
{"tag": "Cost", "path": "*exp.Cost", "type": "*variable", "value": "~*req.Cost{*round:4}"},
|
||||
],
|
||||
@@ -110,8 +110,8 @@
|
||||
{"tag": "Account", "path": "*exp.Account", "type": "*variable", "value": "~*req.Account"},
|
||||
{"tag": "Subject", "path": "*exp.Subject", "type": "*variable", "value": "~*req.Subject"},
|
||||
{"tag": "Destination", "path": "*exp.Destination", "type": "*variable", "value": "~*req.Destination"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*time_string}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*time_string}"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*timestring}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*timestring}"},
|
||||
{"tag": "Usage", "path": "*exp.Usage", "type": "*variable", "value": "~*req.Usage{*duration_seconds}"},
|
||||
{"tag": "Cost", "path": "*exp.Cost", "type": "*variable", "value": "~*req.Cost{*round:4}"},
|
||||
],
|
||||
@@ -136,8 +136,8 @@
|
||||
{"tag": "Account", "path": "*exp.Account", "type": "*variable", "value": "~*req.Account"},
|
||||
{"tag": "Subject", "path": "*exp.Subject", "type": "*variable", "value": "~*req.Subject"},
|
||||
{"tag": "Destination", "path": "*exp.Destination", "type": "*variable", "value": "~*req.Destination"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*time_string}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*time_string}"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*timestring}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*timestring}"},
|
||||
{"tag": "Usage", "path": "*exp.Usage", "type": "*variable", "value": "~*req.Usage{*duration_seconds}"},
|
||||
{"tag": "Cost", "path": "*exp.Cost", "type": "*variable", "value": "~*req.Cost{*round:4}"},
|
||||
],
|
||||
|
||||
@@ -81,8 +81,8 @@
|
||||
{"tag": "Account", "path": "*exp.Account", "type": "*variable", "value": "~*req.Account"},
|
||||
{"tag": "Subject", "path": "*exp.Subject", "type": "*variable", "value": "~*req.Subject"},
|
||||
{"tag": "Destination", "path": "*exp.Destination", "type": "*variable", "value": "~*req.Destination"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*time_string:2006-01-02T15:04:05Z}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*time_string:2006-01-02T15:04:05Z}"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*timestring::2006-01-02T15:04:05Z}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*timestring::2006-01-02T15:04:05Z}"},
|
||||
{"tag": "Usage", "path": "*exp.Usage", "type": "*variable", "value": "~*req.Usage{*duration_seconds}"},
|
||||
{"tag": "Cost", "path": "*exp.Cost", "type": "*variable", "value": "~*req.Cost{*round:4}"},
|
||||
],
|
||||
@@ -107,8 +107,8 @@
|
||||
{"tag": "Account", "path": "*exp.Account", "type": "*variable", "value": "~*req.Account"},
|
||||
{"tag": "Subject", "path": "*exp.Subject", "type": "*variable", "value": "~*req.Subject"},
|
||||
{"tag": "Destination", "path": "*exp.Destination", "type": "*variable", "value": "~*req.Destination"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*time_string:2006-01-02T15:04:05Z}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*time_string:2006-01-02T15:04:05Z}"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*timestring::2006-01-02T15:04:05Z}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*timestring::2006-01-02T15:04:05Z}"},
|
||||
{"tag": "Usage", "path": "*exp.Usage", "type": "*variable", "value": "~*req.Usage{*duration_seconds}"},
|
||||
{"tag": "Cost", "path": "*exp.Cost", "type": "*variable", "value": "~*req.Cost{*round:4}"},
|
||||
],
|
||||
@@ -133,8 +133,8 @@
|
||||
{"tag": "Account", "path": "*exp.Account", "type": "*variable", "value": "~*req.Account"},
|
||||
{"tag": "Subject", "path": "*exp.Subject", "type": "*variable", "value": "~*req.Subject"},
|
||||
{"tag": "Destination", "path": "*exp.Destination", "type": "*variable", "value": "~*req.Destination"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*time_string:2006-01-02T15:04:05Z}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*time_string:2006-01-02T15:04:05Z}"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*timestring::2006-01-02T15:04:05Z}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*timestring::2006-01-02T15:04:05Z}"},
|
||||
{"tag": "Usage", "path": "*exp.Usage", "type": "*variable", "value": "~*req.Usage{*duration_seconds}"},
|
||||
{"tag": "Cost", "path": "*exp.Cost", "type": "*variable", "value": "~*req.Cost{*round:4}"},
|
||||
],
|
||||
|
||||
@@ -97,8 +97,8 @@
|
||||
{"tag": "Account", "path": "*exp.Account", "type": "*variable", "value": "~*req.Account"},
|
||||
{"tag": "Subject", "path": "*exp.Subject", "type": "*variable", "value": "~*req.Subject"},
|
||||
{"tag": "Destination", "path": "*exp.Destination", "type": "*variable", "value": "~*req.Destination"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*time_string}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*time_string}"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*timestring}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*timestring}"},
|
||||
{"tag": "Usage", "path": "*exp.Usage", "type": "*variable", "value": "~*req.Usage"},
|
||||
{"tag": "RunID", "path": "*exp.RunID", "type": "*variable", "value": "~*req.RunID"},
|
||||
{"tag": "Cost", "path": "*exp.Cost", "type": "*variable", "value": "~*req.Cost{*round:4}"}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#Tenant,ID,Context,FilterIDs,ActivationInterval,AttributeFilterIDs,Path,Type,Value,Blocker,Weight
|
||||
cgrates.org,ATTR_VARIABLE,*any,*string:~*req.EventName:CallTest,,,*req.Category,*variable,~*req.EventName{*strip:*suffix:*char:Test},false,20
|
||||
cgrates.org,ATTR_VARIABLE,,,,,*req.AnswerTime,*variable,~*req.AnswerTime{*time_string:2006-01-02 15:04:05.999999999 -0700 MST},,
|
||||
cgrates.org,ATTR_VARIABLE,,,,,*req.AnswerTime,*variable,~*req.AnswerTime{*timestring::2006-01-02 15:04:05.999999999 -0700 MST},,
|
||||
cgrates.org,ATTR_SEC,*any,,,,*req.Cost,*variable,~*req.Cost{*round:2:*up},false,10
|
||||
cgrates.org,ATTR_STAT,*any,*string:~*req.EventName:StatsTest,,,*req.AcdMetric,*variable,~*stats.Stat_1.*acd{*duration_seconds&*round:0:*up},false,20
|
||||
|
||||
|
@@ -129,8 +129,8 @@
|
||||
{"tag": "Account", "path": "*exp.Account", "type": "*variable", "value": "~*req.Account"},
|
||||
{"tag": "Subject", "path": "*exp.Subject", "type": "*variable", "value": "~*req.Subject"},
|
||||
{"tag": "Destination", "path": "*exp.Destination", "type": "*variable", "value": "~*req.Destination"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*time_string:2006-01-02T15:04:05Z}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*time_string:2006-01-02T15:04:05Z}"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*timestring::2006-01-02T15:04:05Z}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*timestring::2006-01-02T15:04:05Z}"},
|
||||
{"tag": "Usage", "path": "*exp.Usage", "type": "*variable", "value": "~*req.Usage{*duration_seconds}"},
|
||||
{"tag": "Cost", "path": "*exp.Cost", "type": "*variable", "value": "~*req.Cost{*round:4}"},
|
||||
],
|
||||
|
||||
@@ -128,8 +128,8 @@
|
||||
{"tag": "Account", "path": "*exp.Account", "type": "*variable", "value": "~*req.Account"},
|
||||
{"tag": "Subject", "path": "*exp.Subject", "type": "*variable", "value": "~*req.Subject"},
|
||||
{"tag": "Destination", "path": "*exp.Destination", "type": "*variable", "value": "~*req.Destination"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*time_string:2006-01-02T15:04:05Z}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*time_string:2006-01-02T15:04:05Z}"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*timestring::2006-01-02T15:04:05Z}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*timestring::2006-01-02T15:04:05Z}"},
|
||||
{"tag": "Usage", "path": "*exp.Usage", "type": "*variable", "value": "~*req.Usage{*duration_seconds}"},
|
||||
{"tag": "Cost", "path": "*exp.Cost", "type": "*variable", "value": "~*req.Cost{*round:4}"},
|
||||
],
|
||||
|
||||
@@ -103,8 +103,8 @@
|
||||
{"tag": "Account", "path": "*exp.Account", "type": "*variable", "value": "~*req.Account"},
|
||||
{"tag": "Subject", "path": "*exp.Subject", "type": "*variable", "value": "~*req.Subject"},
|
||||
{"tag": "Destination", "path": "*exp.Destination", "type": "*variable", "value": "~*req.Destination"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*time_string:2006-01-02T15:04:05Z}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*time_string:2006-01-02T15:04:05Z}"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*timestring::2006-01-02T15:04:05Z}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*timestring::2006-01-02T15:04:05Z}"},
|
||||
{"tag": "Usage", "path": "*exp.Usage", "type": "*variable", "value": "~*req.Usage{*duration_seconds}"},
|
||||
{"tag": "Cost", "path": "*exp.Cost", "type": "*variable", "value": "~*req.Cost{*round:4}"},
|
||||
],
|
||||
|
||||
@@ -120,8 +120,8 @@
|
||||
{"tag": "Account", "path": "*exp.Account", "type": "*variable", "value": "~*req.Account"},
|
||||
{"tag": "Subject", "path": "*exp.Subject", "type": "*variable", "value": "~*req.Subject"},
|
||||
{"tag": "Destination", "path": "*exp.Destination", "type": "*variable", "value": "~*req.Destination"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*time_string:2006-01-02T15:04:05Z}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*time_string:2006-01-02T15:04:05Z}"},
|
||||
{"tag": "SetupTime", "path": "*exp.SetupTime", "type": "*variable", "value": "~*req.SetupTime{*timestring::2006-01-02T15:04:05Z}" },
|
||||
{"tag": "AnswerTime", "path": "*exp.AnswerTime", "type": "*variable", "value": "~*req.AnswerTime{*timestring::2006-01-02T15:04:05Z}"},
|
||||
{"tag": "Usage", "path": "*exp.Usage", "type": "*variable", "value": "~*req.Usage{*duration_seconds}"},
|
||||
{"tag": "Cost", "path": "*exp.Cost", "type": "*variable", "value": "~*req.Cost{*round:4}"},
|
||||
],
|
||||
|
||||
@@ -741,8 +741,7 @@ const (
|
||||
MetaDuration = "*duration"
|
||||
MetaDurationFormat = "*durfmt"
|
||||
MetaLibPhoneNumber = "*libphonenumber"
|
||||
MetaTimeString = "*time_string"
|
||||
MetaLocalTime = "*localtime"
|
||||
MetaTimeString = "*timestring"
|
||||
MetaIP2Hex = "*ip2hex"
|
||||
MetaString2Hex = "*string2hex"
|
||||
MetaUnixTime = "*unixtime"
|
||||
|
||||
@@ -120,18 +120,11 @@ func NewDataConverter(params string) (conv DataConverter, err error) {
|
||||
}
|
||||
return NewPhoneNumberConverter(params[len(MetaLibPhoneNumber)+1:])
|
||||
case strings.HasPrefix(params, MetaTimeString):
|
||||
layout := time.RFC3339
|
||||
if len(params) > len(MetaTimeString) { // no extra params, defaults implied
|
||||
layout = params[len(MetaTimeString)+1:]
|
||||
}
|
||||
return NewTimeStringConverter(layout), nil
|
||||
|
||||
case strings.HasPrefix(params, MetaLocalTime):
|
||||
var paramsStr string
|
||||
if len(params) > len(MetaLocalTime) {
|
||||
paramsStr = params[len(MetaLocalTime)+1:]
|
||||
if len(params) > len(MetaTimeString) {
|
||||
paramsStr = params[len(MetaTimeString)+1:]
|
||||
}
|
||||
return NewLocalTimeConverter(paramsStr)
|
||||
return NewTimeStringConverter(paramsStr)
|
||||
case strings.HasPrefix(params, MetaRandom):
|
||||
if len(params) == len(MetaRandom) { // no extra params, defaults implied
|
||||
return NewRandomConverter(EmptyString)
|
||||
@@ -410,24 +403,6 @@ func (*SIPURIMethodConverter) Convert(in any) (out any, err error) {
|
||||
return sipingo.MethodFrom(IfaceAsString(in)), nil
|
||||
}
|
||||
|
||||
func NewTimeStringConverter(params string) (hdlr DataConverter) {
|
||||
return &TimeStringConverter{Layout: params}
|
||||
}
|
||||
|
||||
type TimeStringConverter struct {
|
||||
Layout string
|
||||
}
|
||||
|
||||
// Convert implements DataConverter interface
|
||||
func (tS *TimeStringConverter) Convert(in any) (
|
||||
out any, err error) {
|
||||
tm, err := ParseTimeDetectLayout(in.(string), EmptyString)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return tm.Format(tS.Layout), nil
|
||||
}
|
||||
|
||||
// String2HexConverter will transform the string to hex
|
||||
type String2HexConverter struct{}
|
||||
|
||||
@@ -824,12 +799,12 @@ func (mS *DurationMinutesConverter) Convert(in any) (
|
||||
return
|
||||
}
|
||||
|
||||
type LocalTimeConverter struct {
|
||||
type TimeStringConverter struct {
|
||||
loc *time.Location
|
||||
layout string
|
||||
}
|
||||
|
||||
func NewLocalTimeConverter(params string) (DataConverter, error) {
|
||||
func NewTimeStringConverter(params string) (DataConverter, error) {
|
||||
locStr := "Local"
|
||||
layout := time.DateTime
|
||||
if len(params) != 0 {
|
||||
@@ -847,9 +822,10 @@ func NewLocalTimeConverter(params string) (DataConverter, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return LocalTimeConverter{loc: loc, layout: layout}, nil
|
||||
return TimeStringConverter{loc: loc, layout: layout}, nil
|
||||
}
|
||||
func (lt LocalTimeConverter) Convert(in any) (out any, err error) {
|
||||
|
||||
func (ts TimeStringConverter) Convert(in any) (out any, err error) {
|
||||
var tm time.Time
|
||||
switch val := in.(type) {
|
||||
case string:
|
||||
@@ -862,6 +838,6 @@ func (lt LocalTimeConverter) Convert(in any) (out any, err error) {
|
||||
default:
|
||||
return nil, fmt.Errorf("*localtime converter: unsupported input")
|
||||
}
|
||||
tm = tm.In(lt.loc)
|
||||
return tm.Format(lt.layout), nil
|
||||
tm = tm.In(ts.loc)
|
||||
return tm.Format(ts.layout), nil
|
||||
}
|
||||
|
||||
@@ -190,23 +190,26 @@ func TestNewDataConverter(t *testing.T) {
|
||||
t.Errorf("Expected %+v received: %+v", exp, hex)
|
||||
}
|
||||
|
||||
tm, err := NewDataConverter(MetaTimeString)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
expTime := NewTimeStringConverter(time.RFC3339)
|
||||
if !reflect.DeepEqual(tm, expTime) {
|
||||
t.Errorf("Expected %+v received: %+v", expTime, tm)
|
||||
}
|
||||
// tm, err := NewDataConverter(MetaTimeString)
|
||||
// if err != nil {
|
||||
// t.Error(err)
|
||||
// }
|
||||
// expTime, err := NewTimeStringConverter(":" + time.RFC3339)
|
||||
// if !reflect.DeepEqual(tm, expTime) {
|
||||
// t.Errorf("Expected %+v received: %+v", expTime, tm)
|
||||
// }
|
||||
|
||||
tm, err = NewDataConverter("*time_string:020106150400")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
expTime = NewTimeStringConverter("020106150400")
|
||||
if !reflect.DeepEqual(tm, expTime) {
|
||||
t.Errorf("Expected %+v received: %+v", expTime, tm)
|
||||
}
|
||||
// tm, err = NewDataConverter("*timestring::020106150400")
|
||||
// if err != nil {
|
||||
// t.Error(err)
|
||||
// }
|
||||
// expTime, err = NewTimeStringConverter(":020106150400")
|
||||
// if err != nil {
|
||||
// t.Fatal(err)
|
||||
// }
|
||||
// if !reflect.DeepEqual(tm, expTime) {
|
||||
// t.Errorf("Expected %+v received: %+v", expTime, tm)
|
||||
// }
|
||||
expected := &DurationFormatConverter{Layout: "15:04:05"}
|
||||
if durFmt, err := NewDataConverter(MetaDurationFormat + ":15:04:05"); err != nil {
|
||||
t.Error(err)
|
||||
@@ -813,70 +816,80 @@ func TestNewDataConverterMustCompile2(t *testing.T) {
|
||||
NewDataConverterMustCompile(MetaMultiply)
|
||||
}
|
||||
|
||||
func TestNewTimeStringConverter(t *testing.T) {
|
||||
//empty
|
||||
eOut := &TimeStringConverter{Layout: EmptyString}
|
||||
if rcv := NewTimeStringConverter(EmptyString); !reflect.DeepEqual(eOut, rcv) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", eOut, rcv)
|
||||
}
|
||||
// func TestNewTimeStringConverter(t *testing.T) {
|
||||
// //empty
|
||||
// // eOut := &TimeStringConverter{layout: EmptyString}
|
||||
// // if rcv, err := NewTimeStringConverter(EmptyString); err != nil {
|
||||
// // t.Error(err)
|
||||
// // } else if !reflect.DeepEqual(eOut, rcv) {
|
||||
// // t.Errorf("Expecting: %+v, received: %+v", eOut, rcv)
|
||||
// // }
|
||||
|
||||
//default
|
||||
eOut = &TimeStringConverter{Layout: time.RFC3339}
|
||||
var rcv DataConverter
|
||||
if rcv = NewTimeStringConverter(time.RFC3339); !reflect.DeepEqual(eOut, rcv) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", eOut, rcv)
|
||||
}
|
||||
exp := "2015-07-07T14:52:08Z"
|
||||
if rcv, err := rcv.Convert("1436280728"); err != nil {
|
||||
t.Error(err)
|
||||
} else if rcv.(string) != exp {
|
||||
t.Errorf("Expecting: %+v, received: %+v", exp, rcv)
|
||||
}
|
||||
exp = "2013-07-30T19:33:10Z"
|
||||
if rcv, err := rcv.Convert("1375212790"); err != nil {
|
||||
t.Error(err)
|
||||
} else if rcv.(string) != exp {
|
||||
t.Errorf("Expecting: %+v, received: %+v", exp, rcv)
|
||||
}
|
||||
// //default
|
||||
// // eOut = &TimeStringConverter{layout: time.RFC3339}
|
||||
// // var rcv DataConverter
|
||||
// // if rcv, err := NewTimeStringConverter(":" + time.RFC3339); err != nil {
|
||||
// // t.Error(err)
|
||||
// // } else if !reflect.DeepEqual(eOut, rcv) {
|
||||
// // t.Errorf("Expecting: %+v, received: %+v", eOut, rcv)
|
||||
// // }
|
||||
// exp := "2015-07-07T14:52:08Z"
|
||||
// if rcv, err := rcv.Convert("1436280728"); err != nil {
|
||||
// t.Error(err)
|
||||
// } else if rcv.(string) != exp {
|
||||
// t.Errorf("Expecting: %+v, received: %+v", exp, rcv)
|
||||
// }
|
||||
// exp = "2013-07-30T19:33:10Z"
|
||||
// if rcv, err := rcv.Convert("1375212790"); err != nil {
|
||||
// t.Error(err)
|
||||
// } else if rcv.(string) != exp {
|
||||
// t.Errorf("Expecting: %+v, received: %+v", exp, rcv)
|
||||
// }
|
||||
|
||||
//other
|
||||
eOut = &TimeStringConverter{"020106150400"}
|
||||
if rcv = NewTimeStringConverter("020106150400"); !reflect.DeepEqual(eOut, rcv) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", eOut, rcv)
|
||||
}
|
||||
exp = "070715145200"
|
||||
if rcv, err := rcv.Convert("1436280728"); err != nil {
|
||||
t.Error(err)
|
||||
} else if rcv.(string) != exp {
|
||||
t.Errorf("Expecting: %+v, received: %+v", exp, rcv)
|
||||
}
|
||||
exp = "290720175900"
|
||||
if rcv, err := rcv.Convert("2020-07-29T17:59:59Z"); err != nil {
|
||||
t.Error(err)
|
||||
} else if rcv.(string) != exp {
|
||||
t.Errorf("Expecting: %+v, received: %+v", exp, rcv)
|
||||
}
|
||||
// //other
|
||||
// eOut = &TimeStringConverter{layout: "020106150400"}
|
||||
// var err error
|
||||
// rcv, err = NewTimeStringConverter(":020106150400")
|
||||
// if err != nil {
|
||||
// t.Error(err)
|
||||
// } else if !reflect.DeepEqual(eOut, rcv) {
|
||||
// t.Errorf("Expecting: %+v, received: %+v", eOut, rcv)
|
||||
// }
|
||||
// exp = "070715145200"
|
||||
// if rcv, err := rcv.Convert("1436280728"); err != nil {
|
||||
// t.Error(err)
|
||||
// } else if rcv.(string) != exp {
|
||||
// t.Errorf("Expecting: %+v, received: %+v", exp, rcv)
|
||||
// }
|
||||
// exp = "290720175900"
|
||||
// if rcv, err := rcv.Convert("2020-07-29T17:59:59Z"); err != nil {
|
||||
// t.Error(err)
|
||||
// } else if rcv.(string) != exp {
|
||||
// t.Errorf("Expecting: %+v, received: %+v", exp, rcv)
|
||||
// }
|
||||
|
||||
//wrong cases
|
||||
eOut = &TimeStringConverter{"not really a good time"}
|
||||
if rcv = NewTimeStringConverter("not really a good time"); !reflect.DeepEqual(eOut, rcv) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", eOut, rcv)
|
||||
}
|
||||
exp = "not really a good time"
|
||||
if rcv, err := rcv.Convert(EmptyString); err != nil {
|
||||
t.Error(err)
|
||||
} else if rcv.(string) != exp {
|
||||
t.Errorf("Expecting: %+v, received: %+v", exp, rcv)
|
||||
}
|
||||
if rcv, err := rcv.Convert("1375212790"); err != nil {
|
||||
t.Error(err)
|
||||
} else if rcv.(string) != exp {
|
||||
t.Errorf("Expecting: %+v, received: %+v", exp, rcv)
|
||||
}
|
||||
if _, err := rcv.Convert("137521s2790"); err == nil {
|
||||
t.Errorf("Expected error received: %v:", err)
|
||||
}
|
||||
}
|
||||
// //wrong cases
|
||||
// eOut = &TimeStringConverter{layout: "not really a good time"}
|
||||
// if rcv, err := NewTimeStringConverter(":not really a good time"); err != nil {
|
||||
// t.Error(err)
|
||||
// } else if !reflect.DeepEqual(eOut, rcv) {
|
||||
// t.Errorf("Expecting: %+v, received: %+v", eOut, rcv)
|
||||
// }
|
||||
// exp = "not really a good time"
|
||||
// if rcv, err := rcv.Convert(EmptyString); err != nil {
|
||||
// t.Error(err)
|
||||
// } else if rcv.(string) != exp {
|
||||
// t.Errorf("Expecting: %+v, received: %+v", exp, rcv)
|
||||
// }
|
||||
// if rcv, err := rcv.Convert("1375212790"); err != nil {
|
||||
// t.Error(err)
|
||||
// } else if rcv.(string) != exp {
|
||||
// t.Errorf("Expecting: %+v, received: %+v", exp, rcv)
|
||||
// }
|
||||
// if _, err := rcv.Convert("137521s2790"); err == nil {
|
||||
// t.Errorf("Expected error received: %v:", err)
|
||||
// }
|
||||
// }
|
||||
|
||||
func TestStringHexConvertor(t *testing.T) {
|
||||
hx := new(String2HexConverter)
|
||||
@@ -2014,13 +2027,13 @@ func TestLocalTimeDurationConverter(t *testing.T) {
|
||||
expectValue string
|
||||
expectedErr error
|
||||
}{
|
||||
{name: "Convert to CEST timezone", input: "2025-05-07T14:25:08Z", params: "*localtime:Europe/Berlin", expectValue: "2025-05-07 16:25:08"},
|
||||
{name: "Convert to UTC timezone", input: "2025-05-07T16:25:08+02:00", params: "*localtime:UTC", expectValue: "2025-05-07 14:25:08"},
|
||||
{name: "Convert to UTC+01:00 timezone", input: "2025-05-07T14:25:08Z", params: "*localtime:Europe/Dublin", expectValue: "2025-05-07 15:25:08"},
|
||||
{name: "Convert to UTC+03:00 timezone", input: time.Date(2025, 5, 5, 15, 5, 0, 0, time.UTC), params: "*localtime:Europe/Istanbul", expectValue: "2025-05-05 18:05:00"},
|
||||
{name: "Convert to UTC+03:00 timezone", input: "2025-05-08T10:07:08Z", params: "*localtime:Europe/Dublin:02/01/2006 15:04:05", expectValue: "08/05/2025 11:07:08"},
|
||||
{name: "Convert string UTC-07:00", input: "2025-03-08T23:50:00-07:00", params: "*localtime:Europe/Paris:15:04:05 02/01/2006", expectValue: "07:50:00 09/03/2025"},
|
||||
{name: "Convert time.Time from Asia/Dubai", input: loadTimelocation("Asia/Dubai", 2025, time.November, 20, 22, 15, 0, 0), params: "*localtime:Australia/Sydney:Jan 2, 2006 at 3:04pm (MST)", expectValue: "Nov 21, 2025 at 5:15am (AEDT)"},
|
||||
{name: "Convert to CEST timezone", input: "2025-05-07T14:25:08Z", params: "*timestring:Europe/Berlin", expectValue: "2025-05-07 16:25:08"},
|
||||
{name: "Convert to UTC timezone", input: "2025-05-07T16:25:08+02:00", params: "*timestring:UTC", expectValue: "2025-05-07 14:25:08"},
|
||||
{name: "Convert to UTC+01:00 timezone", input: "2025-05-07T14:25:08Z", params: "*timestring:Europe/Dublin", expectValue: "2025-05-07 15:25:08"},
|
||||
{name: "Convert to UTC+03:00 timezone", input: time.Date(2025, 5, 5, 15, 5, 0, 0, time.UTC), params: "*timestring:Europe/Istanbul", expectValue: "2025-05-05 18:05:00"},
|
||||
{name: "Convert to UTC+03:00 timezone", input: "2025-05-08T10:07:08Z", params: "*timestring:Europe/Dublin:02/01/2006 15:04:05", expectValue: "08/05/2025 11:07:08"},
|
||||
{name: "Convert string UTC-07:00", input: "2025-03-08T23:50:00-07:00", params: "*timestring:Europe/Paris:15:04:05 02/01/2006", expectValue: "07:50:00 09/03/2025"},
|
||||
{name: "Convert time.Time from Asia/Dubai", input: loadTimelocation("Asia/Dubai", 2025, time.November, 20, 22, 15, 0, 0), params: "*timestring:Australia/Sydney:Jan 2, 2006 at 3:04pm (MST)", expectValue: "Nov 21, 2025 at 5:15am (AEDT)"},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
|
||||
Reference in New Issue
Block a user