diff --git a/backend/handlers/handle_spotify.go b/backend/handlers/handle_spotify.go index 3239cec..49cdcfc 100644 --- a/backend/handlers/handle_spotify.go +++ b/backend/handlers/handle_spotify.go @@ -1,48 +1,58 @@ package handlers import ( - "context" - "log" + "net/http" "github.com/gin-gonic/gin" ) -func (store *Store) ListeningTo(c *gin.Context) { - ctx := context.Background() +func (store *Store) CompleteAuth(c *gin.Context) { + state := c.Query("state") + // code := c.Query("code") - log.Default().Println("Tets") - - playing, err := store.SpotifyClient.PlayerCurrentlyPlaying(ctx) + token, err := store.SpotifyAuth.Token(c.Request.Context(), state, c.Request) if err != nil { - c.JSON(500, gin.H{"error": err.Error()}) + c.String(http.StatusInternalServerError, "Couldn't get token: %v", err) 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 - } - - 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, - }) + store.SpotifyToken = token } + +// func (store *Store) ListeningTo(c *gin.Context) { +// ctx := context.Background() + +// 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 +// } + +// // 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 +// } + +// c.JSON(200, gin.H{ +// "playing": true, +// "song_name": item.Name, +// "artist_name": artistName, +// "album_image": imgURL, +// }) +// } diff --git a/backend/handlers/store.go b/backend/handlers/store.go index 86eb86c..308c855 100644 --- a/backend/handlers/store.go +++ b/backend/handlers/store.go @@ -1,11 +1,13 @@ package handlers import ( - "github.com/zmb3/spotify/v2" + spotifyauth "github.com/zmb3/spotify/v2/auth" + "golang.org/x/oauth2" "gorm.io/gorm" ) type Store struct { - DB *gorm.DB - SpotifyClient *spotify.Client + DB *gorm.DB + SpotifyAuth *spotifyauth.Authenticator + SpotifyToken *oauth2.Token }