this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

add in smarter timestamp parsing (#233)

i'm surely missing some that are *Technically* valid, but i'd prefer we
just got more strict on whats allowed.

authored by

Whyrusleeping and committed by
GitHub
05f31a96 c0ec0ca0

+54
+35
util/time.go
··· 1 1 package util 2 2 3 + import ( 4 + "fmt" 5 + "time" 6 + ) 7 + 3 8 const ISO8601 = "2006-01-02T15:04:05.000Z" 9 + 10 + const ISO8601_milli = "2006-01-02T15:04:05.000000Z" 11 + 12 + const ISO8601_numtz = "2006-01-02T15:04:05.000-07:00" 13 + 14 + const ISO8601_numtz_milli = "2006-01-02T15:04:05.000000-07:00" 15 + 16 + func ParseTimestamp(s string) (time.Time, error) { 17 + t, err := time.Parse(ISO8601, s) 18 + if err == nil { 19 + return t, nil 20 + } 21 + 22 + t, err = time.Parse(ISO8601_milli, s) 23 + if err == nil { 24 + return t, nil 25 + } 26 + 27 + t, err = time.Parse(ISO8601_numtz, s) 28 + if err == nil { 29 + return t, nil 30 + } 31 + 32 + t, err = time.Parse(ISO8601_numtz_milli, s) 33 + if err == nil { 34 + return t, nil 35 + } 36 + 37 + return time.Time{}, fmt.Errorf("failed to parse %q as timestamp", s) 38 + }
+19
util/time_test.go
··· 1 + package util 2 + 3 + import "testing" 4 + 5 + func TestTimeParsing(t *testing.T) { 6 + good := []string{ 7 + "2023-07-19T21:54:14.165300Z", 8 + "2023-07-19T21:54:14.163Z", 9 + "2023-07-19T21:52:02.000+00:00", 10 + "2023-07-19T21:52:02.123456+00:00", 11 + } 12 + 13 + for _, g := range good { 14 + _, err := ParseTimestamp(g) 15 + if err != nil { 16 + t.Fatal(err) 17 + } 18 + } 19 + }