mirror of
https://github.com/element-hq/dendrite.git
synced 2025-03-14 14:15:35 +00:00
32 lines
882 B
Go
32 lines
882 B
Go
// Copyright 2024 New Vector Ltd.
|
|
//
|
|
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
|
// Please see LICENSE files in the repository root for full details.
|
|
|
|
package httputil
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
// ParseTSParam takes a req (typically from an application service) and parses a Time object
|
|
// from the req if it exists in the query parameters. If it doesn't exist, the
|
|
// current time is returned.
|
|
func ParseTSParam(req *http.Request) (time.Time, error) {
|
|
// Use the ts parameter's value for event time if present
|
|
tsStr := req.URL.Query().Get("ts")
|
|
if tsStr == "" {
|
|
return time.Now(), nil
|
|
}
|
|
|
|
// The parameter exists, parse into a Time object
|
|
ts, err := strconv.ParseInt(tsStr, 10, 64)
|
|
if err != nil {
|
|
return time.Time{}, fmt.Errorf("param 'ts' is no valid int (%s)", err.Error())
|
|
}
|
|
|
|
return time.UnixMilli(ts), nil
|
|
}
|