32 lines
625 B
Go
32 lines
625 B
Go
package paramParser
|
|
|
|
import (
|
|
"log/slog"
|
|
"net/url"
|
|
"time"
|
|
)
|
|
|
|
type ParamsParser struct {
|
|
urlParams url.Values
|
|
}
|
|
|
|
func New(_urlParams url.Values) ParamsParser {
|
|
return ParamsParser{
|
|
urlParams: _urlParams,
|
|
}
|
|
}
|
|
|
|
func (p *ParamsParser) ParseTimestamp(key string, format string, fallback time.Time) time.Time {
|
|
paramTimestamp := p.urlParams.Get(key)
|
|
if paramTimestamp == "" {
|
|
return fallback
|
|
}
|
|
if timestamp, err := time.Parse(format, paramTimestamp); err == nil {
|
|
return timestamp
|
|
} else {
|
|
slog.Warn("Error parsing HTTP Params to timestamp", slog.Any("key", key), slog.Any("error", err))
|
|
return fallback
|
|
}
|
|
|
|
}
|