Some cleanup, adding missing context handling

This commit is contained in:
Deluan 2022-12-06 19:57:47 -05:00
parent 55ba39cb79
commit c5f7cf97f4
4 changed files with 22 additions and 28 deletions

View File

@ -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)

View File

@ -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 != "" {

View File

@ -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

View File

@ -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
}