log scrobbling errors

related https://github.com/sentriz/gonic/issues/162
This commit is contained in:
sentriz
2021-10-12 18:47:46 +01:00
parent 848d85d26a
commit 82d8a57aab
2 changed files with 9 additions and 10 deletions

View File

@@ -1,18 +1,15 @@
package multierr package multierr
import ( import "strings"
"strings"
)
type Err []error type Err []error
func (me Err) Error() string { func (me Err) Error() string {
var s strings.Builder var strs []string
for _, err := range me { for _, err := range me {
s.WriteString("\n") strs = append(strs, err.Error())
s.WriteString(err.Error())
} }
return s.String() return strings.Join(strs, "\n")
} }
func (me Err) Len() int { func (me Err) Len() int {

View File

@@ -8,6 +8,7 @@ import (
"github.com/jinzhu/gorm" "github.com/jinzhu/gorm"
"go.senan.xyz/gonic/multierr"
"go.senan.xyz/gonic/server/ctrlsubsonic/params" "go.senan.xyz/gonic/server/ctrlsubsonic/params"
"go.senan.xyz/gonic/server/ctrlsubsonic/spec" "go.senan.xyz/gonic/server/ctrlsubsonic/spec"
"go.senan.xyz/gonic/server/ctrlsubsonic/specid" "go.senan.xyz/gonic/server/ctrlsubsonic/specid"
@@ -53,13 +54,14 @@ func (c *Controller) ServeScrobble(r *http.Request) *spec.Response {
// instead convert UnixNano to miliseconds // instead convert UnixNano to miliseconds
optStampMili := params.GetOrInt("time", int(time.Now().UnixNano()/1e6)) optStampMili := params.GetOrInt("time", int(time.Now().UnixNano()/1e6))
optSubmission := params.GetOrBool("submission", true) optSubmission := params.GetOrBool("submission", true)
scrobbleErrs := []error{} var scrobbleErrs multierr.Err
for _, scrobbler := range c.Scrobblers { for _, scrobbler := range c.Scrobblers {
if err := scrobbler.Scrobble(user, track, optStampMili, optSubmission); err != nil { if err := scrobbler.Scrobble(user, track, optStampMili, optSubmission); err != nil {
scrobbleErrs = append(scrobbleErrs, err) scrobbleErrs.Add(err)
} }
} }
if len(scrobbleErrs) != 0 { if scrobbleErrs.Len() > 0 {
log.Printf("error when submitting: %v", scrobbleErrs)
return spec.NewError(0, "error when submitting: %v", scrobbleErrs) return spec.NewError(0, "error when submitting: %v", scrobbleErrs)
} }
return spec.NewResponse() return spec.NewResponse()