diff --git a/backend/handlers/handle_spotify.go b/backend/handlers/handle_spotify.go index bb35a83..07c2db1 100644 --- a/backend/handlers/handle_spotify.go +++ b/backend/handlers/handle_spotify.go @@ -4,6 +4,7 @@ import ( "net/http" "github.com/gin-gonic/gin" + "github.com/zmb3/spotify/v2" ) func (store *Store) CompleteAuth(c *gin.Context) { @@ -17,6 +18,11 @@ func (store *Store) CompleteAuth(c *gin.Context) { } store.SpotifyToken = token + + client := spotify.New(store.SpotifyAuth.Client(c.Request.Context(), token)) + + store.SpotifyClient = client + c.JSON(http.StatusOK, gin.H{ "message": "Authentication successful", "token": token.AccessToken, @@ -25,40 +31,40 @@ func (store *Store) CompleteAuth(c *gin.Context) { }) } -// func (store *Store) ListeningTo(c *gin.Context) { -// ctx := context.Background() +func (store *Store) ListeningTo(c *gin.Context) { + ctx := c.Request.Context() -// playing, err := store.SpotifyClient.PlayerCurrentlyPlaying(ctx) -// if err != nil { -// c.JSON(500, gin.H{"error": err.Error()}) -// return -// } + playing, err := store.SpotifyClient.PlayerCurrentlyPlaying(ctx) + if err != nil { + c.JSON(500, gin.H{"error": err.Error()}) + return + } -// // If Spotify says "nothing is currently playing" -// if playing == nil || !playing.Playing || playing.Item == nil { -// c.JSON(200, gin.H{ -// "playing": false, -// "message": "User is not currently listening to anything", -// }) -// return -// } + // If Spotify says "nothing is currently playing" + if playing == nil || !playing.Playing || playing.Item == nil { + c.JSON(200, gin.H{ + "playing": false, + "message": "User is not currently listening to anything", + }) + return + } -// // Extract fields safely -// item := playing.Item -// artistName := "" -// if len(item.Artists) > 0 { -// artistName = item.Artists[0].Name -// } + // Extract fields safely + item := playing.Item + artistName := "" + if len(item.Artists) > 0 { + artistName = item.Artists[0].Name + } -// imgURL := "" -// if len(item.Album.Images) > 0 { -// imgURL = item.Album.Images[0].URL -// } + imgURL := "" + if len(item.Album.Images) > 0 { + imgURL = item.Album.Images[0].URL + } -// c.JSON(200, gin.H{ -// "playing": true, -// "song_name": item.Name, -// "artist_name": artistName, -// "album_image": imgURL, -// }) -// } + c.JSON(200, gin.H{ + "playing": true, + "song_name": item.Name, + "artist_name": artistName, + "album_image": imgURL, + }) +}