use errors.Wrap everywhere

This commit is contained in:
sentriz
2019-05-24 14:45:36 +01:00
parent 4398077d1b
commit 128a326c8a
2 changed files with 38 additions and 38 deletions

View File

@@ -23,6 +23,41 @@ var (
}
)
func GetSession(apiKey, secret, token string) (string, error) {
params := url.Values{}
params.Add("method", "auth.getSession")
params.Add("api_key", apiKey)
params.Add("token", token)
params.Add("api_sig", getParamSignature(params, secret))
resp, err := makeRequest("GET", params)
if err != nil {
return "", errors.Wrap(err, "making session GET")
}
return resp.Session.Key, nil
}
func Scrobble(apiKey, secret, session string, track *model.Track,
stampMili int, submission bool) error {
params := url.Values{}
if submission {
params.Add("method", "track.Scrobble")
// last.fm wants the timestamp in seconds
params.Add("timestamp", strconv.Itoa(stampMili/1e3))
} else {
params.Add("method", "track.updateNowPlaying")
}
params.Add("api_key", apiKey)
params.Add("sk", session)
params.Add("artist", track.Artist)
params.Add("track", track.Title)
params.Add("album", track.Album.Title)
params.Add("albumArtist", track.AlbumArtist.Name)
params.Add("trackNumber", strconv.Itoa(track.TrackNumber))
params.Add("api_sig", getParamSignature(params, secret))
_, err := makeRequest("POST", params)
return err
}
func getParamSignature(params url.Values, secret string) string {
// the parameters must be in order before hashing
paramKeys := make([]string, 0)
@@ -59,38 +94,3 @@ func makeRequest(method string, params url.Values) (*LastFM, error) {
}
return &lastfm, nil
}
func GetSession(apiKey, secret, token string) (string, error) {
params := url.Values{}
params.Add("method", "auth.getSession")
params.Add("api_key", apiKey)
params.Add("token", token)
params.Add("api_sig", getParamSignature(params, secret))
resp, err := makeRequest("GET", params)
if err != nil {
return "", fmt.Errorf("error when getting session step '%v'", err)
}
return resp.Session.Key, nil
}
func Scrobble(apiKey, secret, session string,
track *model.Track, stampMili int, submission bool) error {
params := url.Values{}
if submission {
params.Add("method", "track.Scrobble")
// last.fm wants the timestamp in seconds
params.Add("timestamp", strconv.Itoa(stampMili / 1e3))
} else {
params.Add("method", "track.updateNowPlaying")
}
params.Add("api_key", apiKey)
params.Add("sk", session)
params.Add("artist", track.Artist)
params.Add("track", track.Title)
params.Add("album", track.Album.Title)
params.Add("albumArtist", track.AlbumArtist.Name)
params.Add("trackNumber", strconv.Itoa(track.TrackNumber))
params.Add("api_sig", getParamSignature(params, secret))
_, err := makeRequest("POST", params)
return err
}

View File

@@ -1,13 +1,13 @@
package scanner
import (
"fmt"
"os"
"path"
"path/filepath"
"strings"
"github.com/dhowden/tag"
"github.com/pkg/errors"
)
var trackExtensions = map[string]string{
@@ -51,12 +51,12 @@ func isCover(fullPath string) bool {
func readTags(path string) (tag.Metadata, error) {
trackData, err := os.Open(path)
if err != nil {
return nil, fmt.Errorf("when tags from disk: %v", err)
return nil, errors.Wrap(err, "reading track from disk")
}
defer trackData.Close()
tags, err := tag.ReadFrom(trackData)
if err != nil {
return nil, err
return nil, errors.Wrap(err, "reading tags from track")
}
return tags, nil
}