Ignores invalid timestamps in requests (use current time)
Fix this issue: https://www.reddit.com/r/navidrome/comments/ql3imf/scrobbling_fails_when_using_substreamer/
This commit is contained in:
@@ -5,6 +5,8 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/navidrome/navidrome/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func ParamString(r *http.Request, param string) string {
|
func ParamString(r *http.Request, param string) string {
|
||||||
@@ -28,9 +30,12 @@ func ParamTimes(r *http.Request, param string) []time.Time {
|
|||||||
times := make([]time.Time, len(pStr))
|
times := make([]time.Time, len(pStr))
|
||||||
for i, t := range pStr {
|
for i, t := range pStr {
|
||||||
ti, err := strconv.ParseInt(t, 10, 64)
|
ti, err := strconv.ParseInt(t, 10, 64)
|
||||||
if err == nil {
|
if err != nil {
|
||||||
times[i] = ToTime(ti)
|
log.Warn(r.Context(), "Ignoring invalid time param", "time", t, err)
|
||||||
|
times[i] = time.Now()
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
times[i] = ToTime(ti)
|
||||||
}
|
}
|
||||||
return times
|
return times
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,6 +92,13 @@ var _ = Describe("Request Helpers", func() {
|
|||||||
It("returns all param occurrences as []time.Time", func() {
|
It("returns all param occurrences as []time.Time", func() {
|
||||||
Expect(ParamTimes(r, "t")).To(Equal([]time.Time{d1, d2}))
|
Expect(ParamTimes(r, "t")).To(Equal([]time.Time{d1, d2}))
|
||||||
})
|
})
|
||||||
|
It("returns current time as default if param is invalid", func() {
|
||||||
|
now := time.Now()
|
||||||
|
r = httptest.NewRequest("GET", "/ping?t=null", nil)
|
||||||
|
times := ParamTimes(r, "t")
|
||||||
|
Expect(times).To(HaveLen(1))
|
||||||
|
Expect(times[0]).To(BeTemporally(">=", now))
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
Describe("ParamInt", func() {
|
Describe("ParamInt", func() {
|
||||||
|
|||||||
Reference in New Issue
Block a user