You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

utils.go 1.2KB

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