code.gitea.io/gitea@v1.19.3/modules/context/utils.go (about) 1 // Copyright 2017 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package context 5 6 import ( 7 "net/url" 8 "strings" 9 "time" 10 ) 11 12 // GetQueryBeforeSince return parsed time (unix format) from URL query's before and since 13 func GetQueryBeforeSince(ctx *Context) (before, since int64, err error) { 14 qCreatedBefore, err := prepareQueryArg(ctx, "before") 15 if err != nil { 16 return 0, 0, err 17 } 18 19 qCreatedSince, err := prepareQueryArg(ctx, "since") 20 if err != nil { 21 return 0, 0, err 22 } 23 24 before, err = parseTime(qCreatedBefore) 25 if err != nil { 26 return 0, 0, err 27 } 28 29 since, err = parseTime(qCreatedSince) 30 if err != nil { 31 return 0, 0, err 32 } 33 return before, since, nil 34 } 35 36 // parseTime parse time and return unix timestamp 37 func parseTime(value string) (int64, error) { 38 if len(value) != 0 { 39 t, err := time.Parse(time.RFC3339, value) 40 if err != nil { 41 return 0, err 42 } 43 if !t.IsZero() { 44 return t.Unix(), nil 45 } 46 } 47 return 0, nil 48 } 49 50 // prepareQueryArg unescape and trim a query arg 51 func prepareQueryArg(ctx *Context, name string) (value string, err error) { 52 value, err = url.PathUnescape(ctx.FormString(name)) 53 value = strings.TrimSpace(value) 54 return value, err 55 }