this repo has no description
1package feeds
2
3import (
4 "time"
5)
6
7func SafeTimestamp(input string) int64 {
8 utcNow := time.Now().UTC()
9 if input == "" {
10 return utcNow.Unix()
11 }
12 var t time.Time
13 var err error
14 layouts := []string{
15 time.RFC3339,
16 }
17 for _, layout := range layouts {
18 if t, err = time.Parse(layout, input); err == nil {
19 break
20 }
21 }
22 if err != nil {
23 return utcNow.Unix()
24 }
25 if t.Unix() <= 0 {
26 return utcNow.Unix()
27 } else if t.Add(-2*time.Minute).Compare(utcNow) == -1 {
28 // accept as long as parsed time is no more than 2 minutes in the future
29 return t.Unix()
30 } else if t.Compare(utcNow) == 1 {
31 return utcNow.Unix()
32 } else {
33 return utcNow.Unix()
34 }
35}