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  }