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  }