From 341ead514e85a0f926feb21b1707b9d1498cfdaa Mon Sep 17 00:00:00 2001 From: DanB Date: Wed, 16 Apr 2014 16:32:45 +0200 Subject: [PATCH] Fixup time parser to support 0 as timestamps sent by FreeSWITCH --- utils/coreutils.go | 2 +- utils/researchreplace_test.go | 9 +++++++++ utils/utils_test.go | 8 ++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/utils/coreutils.go b/utils/coreutils.go index ef49791bc..db5c74880 100644 --- a/utils/coreutils.go +++ b/utils/coreutils.go @@ -131,7 +131,7 @@ func ParseTimeDetectLayout(tmStr string) (time.Time, error) { } else { return time.Unix(tmstmp, 0), nil } - case len(tmStr) == 0: // Time probably missing from request + case tmStr == "0" || len(tmStr) == 0: // Time probably missing from request return nilTime, nil } return nilTime, errors.New("Unsupported time format") diff --git a/utils/researchreplace_test.go b/utils/researchreplace_test.go index e9780b120..f6a6a5116 100644 --- a/utils/researchreplace_test.go +++ b/utils/researchreplace_test.go @@ -40,3 +40,12 @@ func TestProcessReSearchReplace2(t *testing.T) { t.Error("Unexpected output from SearchReplace: ", outStr) } } + +func TestProcessReSearchReplace3(t *testing.T) { //"MatchedDestId":"CST_31800_DE080" + rsr := &ReSearchReplace{regexp.MustCompile(`"MatchedDestId":".+_(\w{5})"`), "$1"} + source := `[{"TimeStart":"2014-04-15T22:17:57+02:00","TimeEnd":"2014-04-15T22:18:01+02:00","Cost":0,"RateInterval":{"Timing":{"Years":[],"Months":[],"MonthDays":[],"WeekDays":[],"StartTime":"00:00:00","EndTime":""},"Rating":{"ConnectFee":0,"Rates":[{"GroupIntervalStart":0,"Value":0,"RateIncrement":1000000000,"RateUnit":60000000000}],"RoundingMethod":"*middle","RoundingDecimals":4},"Weight":10},"CallDuration":4000000000,"Increments":null,"MatchedSubject":"*out:sip.test.cgrates.org:call:*any","MatchedPrefix":"+49800","MatchedDestId":"CST_31800_DE080"}]` + expectOut := "DE080" + if outStr := rsr.Process(source); outStr != expectOut { + t.Error("Unexpected output from SearchReplace: ", outStr) + } +} diff --git a/utils/utils_test.go b/utils/utils_test.go index 1e5bcefb0..af01ef7ec 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -194,6 +194,14 @@ func TestParseTimeDetectLayout(t *testing.T) { } else if !fsTm.Equal(expectedTime) { t.Errorf("Unexpected time parsed: %v, expecting: %v", fsTm, expectedTime) } + fsTmstampStr = "0" + fsTm, err = ParseTimeDetectLayout(fsTmstampStr) + expectedTime = time.Time{} + if err != nil { + t.Error(err) + } else if !fsTm.Equal(expectedTime) { + t.Errorf("Unexpected time parsed: %v, expecting: %v", fsTm, expectedTime) + } } func TestParseDateUnix(t *testing.T) {