From c5f7cf97f49e75950ce2954437d933cdf31a0487 Mon Sep 17 00:00:00 2001 From: Deluan Date: Tue, 6 Dec 2022 19:57:47 -0500 Subject: [PATCH] Some cleanup, adding missing context handling --- core/agents/lastfm/client.go | 18 +++++++++--------- core/agents/listenbrainz/client.go | 10 +++++----- server/subsonic/media_retrieval.go | 16 ++++++++-------- server/subsonic/system.go | 6 ------ 4 files changed, 22 insertions(+), 28 deletions(-) diff --git a/core/agents/lastfm/client.go b/core/agents/lastfm/client.go index 2d0e95310..cdb297997 100644 --- a/core/agents/lastfm/client.go +++ b/core/agents/lastfm/client.go @@ -51,7 +51,7 @@ func (c *Client) ArtistGetInfo(ctx context.Context, name string, mbid string) (* params.Add("artist", name) params.Add("mbid", mbid) params.Add("lang", c.lang) - response, err := c.makeRequest(http.MethodGet, params, false) + response, err := c.makeRequest(ctx, http.MethodGet, params, false) if err != nil { return nil, err } @@ -64,7 +64,7 @@ func (c *Client) ArtistGetSimilar(ctx context.Context, name string, mbid string, params.Add("artist", name) params.Add("mbid", mbid) params.Add("limit", strconv.Itoa(limit)) - response, err := c.makeRequest(http.MethodGet, params, false) + response, err := c.makeRequest(ctx, http.MethodGet, params, false) if err != nil { return nil, err } @@ -77,7 +77,7 @@ func (c *Client) ArtistGetTopTracks(ctx context.Context, name string, mbid strin params.Add("artist", name) params.Add("mbid", mbid) params.Add("limit", strconv.Itoa(limit)) - response, err := c.makeRequest(http.MethodGet, params, false) + response, err := c.makeRequest(ctx, http.MethodGet, params, false) if err != nil { return nil, err } @@ -88,7 +88,7 @@ func (c *Client) GetToken(ctx context.Context) (string, error) { params := url.Values{} params.Add("method", "auth.getToken") c.sign(params) - response, err := c.makeRequest(http.MethodGet, params, true) + response, err := c.makeRequest(ctx, http.MethodGet, params, true) if err != nil { return "", err } @@ -99,7 +99,7 @@ func (c *Client) GetSession(ctx context.Context, token string) (string, error) { params := url.Values{} params.Add("method", "auth.getSession") params.Add("token", token) - response, err := c.makeRequest(http.MethodGet, params, true) + response, err := c.makeRequest(ctx, http.MethodGet, params, true) if err != nil { return "", err } @@ -128,7 +128,7 @@ func (c *Client) UpdateNowPlaying(ctx context.Context, sessionKey string, info S params.Add("duration", strconv.Itoa(info.duration)) params.Add("albumArtist", info.albumArtist) params.Add("sk", sessionKey) - resp, err := c.makeRequest(http.MethodPost, params, true) + resp, err := c.makeRequest(ctx, http.MethodPost, params, true) if err != nil { return err } @@ -151,7 +151,7 @@ func (c *Client) Scrobble(ctx context.Context, sessionKey string, info ScrobbleI params.Add("duration", strconv.Itoa(info.duration)) params.Add("albumArtist", info.albumArtist) params.Add("sk", sessionKey) - resp, err := c.makeRequest(http.MethodPost, params, true) + resp, err := c.makeRequest(ctx, http.MethodPost, params, true) if err != nil { return err } @@ -166,7 +166,7 @@ func (c *Client) Scrobble(ctx context.Context, sessionKey string, info ScrobbleI return nil } -func (c *Client) makeRequest(method string, params url.Values, signed bool) (*Response, error) { +func (c *Client) makeRequest(ctx context.Context, method string, params url.Values, signed bool) (*Response, error) { params.Add("format", "json") params.Add("api_key", c.apiKey) @@ -174,7 +174,7 @@ func (c *Client) makeRequest(method string, params url.Values, signed bool) (*Re c.sign(params) } - req, _ := http.NewRequest(method, apiBaseUrl, nil) + req, _ := http.NewRequestWithContext(ctx, method, apiBaseUrl, nil) req.URL.RawQuery = params.Encode() resp, err := c.hc.Do(req) diff --git a/core/agents/listenbrainz/client.go b/core/agents/listenbrainz/client.go index a5aabc060..39d84c7e0 100644 --- a/core/agents/listenbrainz/client.go +++ b/core/agents/listenbrainz/client.go @@ -85,7 +85,7 @@ func (c *Client) ValidateToken(ctx context.Context, apiKey string) (*listenBrain r := &listenBrainzRequest{ ApiKey: apiKey, } - response, err := c.makeRequest(http.MethodGet, "validate-token", r) + response, err := c.makeRequest(ctx, http.MethodGet, "validate-token", r) if err != nil { return nil, err } @@ -101,7 +101,7 @@ func (c *Client) UpdateNowPlaying(ctx context.Context, apiKey string, li listenI }, } - resp, err := c.makeRequest(http.MethodPost, "submit-listens", r) + resp, err := c.makeRequest(ctx, http.MethodPost, "submit-listens", r) if err != nil { return err } @@ -119,7 +119,7 @@ func (c *Client) Scrobble(ctx context.Context, apiKey string, li listenInfo) err Payload: []listenInfo{li}, }, } - resp, err := c.makeRequest(http.MethodPost, "submit-listens", r) + resp, err := c.makeRequest(ctx, http.MethodPost, "submit-listens", r) if err != nil { return err } @@ -138,13 +138,13 @@ func (c *Client) path(endpoint string) (string, error) { return u.String(), nil } -func (c *Client) makeRequest(method string, endpoint string, r *listenBrainzRequest) (*listenBrainzResponse, error) { +func (c *Client) makeRequest(ctx context.Context, method string, endpoint string, r *listenBrainzRequest) (*listenBrainzResponse, error) { b, _ := json.Marshal(r.Body) uri, err := c.path(endpoint) if err != nil { return nil, err } - req, _ := http.NewRequest(method, uri, bytes.NewBuffer(b)) + req, _ := http.NewRequestWithContext(ctx, method, uri, bytes.NewBuffer(b)) req.Header.Add("Content-Type", "application/json; charset=UTF-8") if r.ApiKey != "" { diff --git a/server/subsonic/media_retrieval.go b/server/subsonic/media_retrieval.go index 5f9bfa615..78221c870 100644 --- a/server/subsonic/media_retrieval.go +++ b/server/subsonic/media_retrieval.go @@ -72,10 +72,10 @@ func (api *Router) GetCoverArt(w http.ResponseWriter, r *http.Request) (*respons return nil, err } -const TIMESTAMP_REGEX string = `(\[([0-9]{1,2}:)?([0-9]{1,2}:)([0-9]{1,2})(\.[0-9]{1,2})?\])` +const timeStampRegex string = `(\[([0-9]{1,2}:)?([0-9]{1,2}:)([0-9]{1,2})(\.[0-9]{1,2})?\])` func isSynced(rawLyrics string) bool { - r := regexp.MustCompile(TIMESTAMP_REGEX) + r := regexp.MustCompile(timeStampRegex) // Eg: [04:02:50.85] // [02:50.85] // [02:50] @@ -88,24 +88,24 @@ func (api *Router) GetLyrics(r *http.Request) (*responses.Subsonic, error) { response := newResponse() lyrics := responses.Lyrics{} response.Lyrics = &lyrics - media_files, err := api.ds.MediaFile(r.Context()).GetAll(filter.SongsWithLyrics(artist, title)) + mediaFiles, err := api.ds.MediaFile(r.Context()).GetAll(filter.SongsWithLyrics(artist, title)) if err != nil { return nil, err } - if len(media_files) == 0 { + if len(mediaFiles) == 0 { return response, nil } lyrics.Artist = artist lyrics.Title = title - if isSynced(media_files[0].Lyrics) { - r := regexp.MustCompile(TIMESTAMP_REGEX) - lyrics.Value = r.ReplaceAllString(media_files[0].Lyrics, "") + if isSynced(mediaFiles[0].Lyrics) { + r := regexp.MustCompile(timeStampRegex) + lyrics.Value = r.ReplaceAllString(mediaFiles[0].Lyrics, "") } else { - lyrics.Value = media_files[0].Lyrics + lyrics.Value = mediaFiles[0].Lyrics } return response, nil diff --git a/server/subsonic/system.go b/server/subsonic/system.go index 006ec99b2..e14099942 100644 --- a/server/subsonic/system.go +++ b/server/subsonic/system.go @@ -6,12 +6,6 @@ import ( "github.com/navidrome/navidrome/server/subsonic/responses" ) -type SystemController struct{} - -func NewSystemController() *SystemController { - return &SystemController{} -} - func (api *Router) Ping(_ *http.Request) (*responses.Subsonic, error) { return newResponse(), nil }