Pass userId explicitly to UserPropsRepository methods

This commit is contained in:
Deluan
2021-06-25 22:21:37 -04:00
parent a1551074bb
commit ee21f3957e
8 changed files with 42 additions and 60 deletions
+3 -3
View File
@@ -159,7 +159,7 @@ func (l *lastfmAgent) callArtistGetTopTracks(ctx context.Context, artistName, mb
}
func (l *lastfmAgent) NowPlaying(ctx context.Context, userId string, track *model.MediaFile) error {
sk, err := l.sessionKeys.get(ctx)
sk, err := l.sessionKeys.get(ctx, userId)
if err != nil {
return err
}
@@ -179,7 +179,7 @@ func (l *lastfmAgent) NowPlaying(ctx context.Context, userId string, track *mode
}
func (l *lastfmAgent) Scrobble(ctx context.Context, userId string, scrobbles []scrobbler.Scrobble) error {
sk, err := l.sessionKeys.get(ctx)
sk, err := l.sessionKeys.get(ctx, userId)
if err != nil {
return err
}
@@ -208,7 +208,7 @@ func (l *lastfmAgent) Scrobble(ctx context.Context, userId string, scrobbles []s
}
func (l *lastfmAgent) IsAuthorized(ctx context.Context, userId string) bool {
sk, err := l.sessionKeys.get(ctx)
sk, err := l.sessionKeys.get(ctx, userId)
return err == nil && sk != ""
}
+3 -8
View File
@@ -10,14 +10,10 @@ import (
"strconv"
"time"
"github.com/navidrome/navidrome/core/scrobbler"
"github.com/navidrome/navidrome/model/request"
"github.com/navidrome/navidrome/model"
"github.com/navidrome/navidrome/conf"
"github.com/navidrome/navidrome/core/agents"
"github.com/navidrome/navidrome/core/scrobbler"
"github.com/navidrome/navidrome/model"
"github.com/navidrome/navidrome/tests"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
@@ -232,8 +228,7 @@ var _ = Describe("lastfmAgent", func() {
var httpClient *tests.FakeHttpClient
var track *model.MediaFile
BeforeEach(func() {
ctx = request.WithUser(ctx, model.User{ID: "user-1"})
_ = ds.UserProps(ctx).Put(sessionKeyProperty, "SK-1")
_ = ds.UserProps(ctx).Put("user-1", sessionKeyProperty, "SK-1")
httpClient = &tests.FakeHttpClient{}
client := NewClient("API_KEY", "SECRET", "en", httpClient)
agent = lastFMConstructor(ds)
+5 -3
View File
@@ -64,7 +64,8 @@ func (s *Router) routes() http.Handler {
func (s *Router) getLinkStatus(w http.ResponseWriter, r *http.Request) {
resp := map[string]interface{}{"status": true}
key, err := s.sessionKeys.get(r.Context())
u, _ := request.UserFrom(r.Context())
key, err := s.sessionKeys.get(r.Context(), u.ID)
if err != nil && err != model.ErrNotFound {
resp["error"] = err
resp["status"] = false
@@ -76,7 +77,8 @@ func (s *Router) getLinkStatus(w http.ResponseWriter, r *http.Request) {
}
func (s *Router) unlink(w http.ResponseWriter, r *http.Request) {
err := s.sessionKeys.delete(r.Context())
u, _ := request.UserFrom(r.Context())
err := s.sessionKeys.delete(r.Context(), u.ID)
if err != nil {
_ = rest.RespondWithError(w, http.StatusInternalServerError, err.Error())
} else {
@@ -117,7 +119,7 @@ func (s *Router) fetchSessionKey(ctx context.Context, uid, token string) error {
"requestId", middleware.GetReqID(ctx), err)
return err
}
err = s.sessionKeys.put(ctx, sessionKey)
err = s.sessionKeys.put(ctx, uid, sessionKey)
if err != nil {
log.Error("Could not save LastFM session key", "userId", uid, "requestId", middleware.GetReqID(ctx), err)
}
+6 -6
View File
@@ -15,14 +15,14 @@ type sessionKeys struct {
ds model.DataStore
}
func (sk *sessionKeys) put(ctx context.Context, sessionKey string) error {
return sk.ds.UserProps(ctx).Put(sessionKeyProperty, sessionKey)
func (sk *sessionKeys) put(ctx context.Context, userId, sessionKey string) error {
return sk.ds.UserProps(ctx).Put(userId, sessionKeyProperty, sessionKey)
}
func (sk *sessionKeys) get(ctx context.Context) (string, error) {
return sk.ds.UserProps(ctx).Get(sessionKeyProperty)
func (sk *sessionKeys) get(ctx context.Context, userId string) (string, error) {
return sk.ds.UserProps(ctx).Get(userId, sessionKeyProperty)
}
func (sk *sessionKeys) delete(ctx context.Context) error {
return sk.ds.UserProps(ctx).Delete(sessionKeyProperty)
func (sk *sessionKeys) delete(ctx context.Context, userId string) error {
return sk.ds.UserProps(ctx).Delete(userId, sessionKeyProperty)
}