this repo has no description
0
fork

Configure Feed

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

util: remove ParseTimestamp (#480)

In particular from search/palomar codebase where it is causing issues,
but also in general the `syntax.ParseDatetime` method is more tested and
compliant with the spec.

authored by

bnewbold and committed by
GitHub
d3006f89 a0cf12cf

+3 -73
+2 -2
cmd/gosky/main.go
··· 747 747 748 748 if len(out.Labels) > 0 { 749 749 last := out.Labels[len(out.Labels)-1] 750 - ts, err := util.ParseTimestamp(last.Cts) 750 + dt, err := syntax.ParseDatetime(last.Cts) 751 751 if err != nil { 752 752 return fmt.Errorf("invalid cts: %w", err) 753 753 } 754 - since = ts.UnixMilli() 754 + since = dt.Time().UnixMilli() 755 755 } else { 756 756 break 757 757 }
+1 -2
search/indexing.go
··· 12 12 appbsky "github.com/bluesky-social/indigo/api/bsky" 13 13 "github.com/bluesky-social/indigo/atproto/identity" 14 14 "github.com/bluesky-social/indigo/atproto/syntax" 15 - "github.com/bluesky-social/indigo/util" 16 15 "github.com/ipfs/go-cid" 17 16 "go.opentelemetry.io/otel/attribute" 18 17 ··· 66 65 67 66 log = log.With("rkey", rkey) 68 67 69 - _, err := util.ParseTimestamp(rec.CreatedAt) 68 + _, err := syntax.ParseDatetimeLenient(rec.CreatedAt) 70 69 if err != nil { 71 70 log.Warn("post had invalid timestamp", "createdAt", rec.CreatedAt, "parseErr", err) 72 71 rec.CreatedAt = ""
-49
util/time.go
··· 1 1 package util 2 2 3 - import ( 4 - "fmt" 5 - "time" 6 - ) 7 - 8 3 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 - const ISO8601_sec = "2006-01-02T15:04:05Z" 17 - 18 - const ISO8601_numtz_sec = "2006-01-02T15:04:05-07:00" 19 - 20 - func ParseTimestamp(s string) (time.Time, error) { 21 - t, err := time.Parse(ISO8601, s) 22 - if err == nil { 23 - return t, nil 24 - } 25 - 26 - t, err = time.Parse(ISO8601_milli, s) 27 - if err == nil { 28 - return t, nil 29 - } 30 - 31 - t, err = time.Parse(ISO8601_numtz, s) 32 - if err == nil { 33 - return t, nil 34 - } 35 - 36 - t, err = time.Parse(ISO8601_numtz_milli, s) 37 - if err == nil { 38 - return t, nil 39 - } 40 - 41 - t, err = time.Parse(ISO8601_sec, s) 42 - if err == nil { 43 - return t, nil 44 - } 45 - 46 - t, err = time.Parse(ISO8601_numtz_sec, s) 47 - if err == nil { 48 - return t, nil 49 - } 50 - 51 - return time.Time{}, fmt.Errorf("failed to parse %q as timestamp", s) 52 - }
-20
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 - "2023-09-13T11:23:33+09:00", 12 - } 13 - 14 - for _, g := range good { 15 - _, err := ParseTimestamp(g) 16 - if err != nil { 17 - t.Fatal(err) 18 - } 19 - } 20 - }