github.com/Cloud-Foundations/Dominator@v0.3.4/lib/url/last.go (about) 1 package url 2 3 import ( 4 "errors" 5 "strconv" 6 "time" 7 ) 8 9 func (pq ParsedQuery) last() (time.Duration, error) { 10 query, ok := pq.Table["last"] 11 if !ok { 12 return 0, errors.New("bad query") 13 } 14 length := len(query) 15 if length < 2 { 16 return 0, errors.New("bad query") 17 } 18 var unit time.Duration 19 unitString := query[length-1] 20 query = query[:length-1] 21 switch unitString { 22 case 's': 23 unit = time.Second 24 case 'm': 25 unit = time.Minute 26 case 'h': 27 unit = time.Hour 28 case 'd': 29 unit = 24 * time.Hour 30 case 'w': 31 unit = 7 * 24 * time.Hour 32 case 'M': 33 unit = 730 * time.Hour 34 default: 35 return 0, errors.New("unknown unit in query") 36 } 37 if val, err := strconv.ParseUint(query, 10, 64); err != nil { 38 return 0, err 39 } else { 40 duration := time.Duration(val) * unit 41 return duration, nil 42 } 43 }