diff --git a/SpotifyApi/src/main/java/com/drivemode/spotify/SpotifyApi.java b/SpotifyApi/src/main/java/com/drivemode/spotify/SpotifyApi.java index 82d4880..d9d98f4 100644 --- a/SpotifyApi/src/main/java/com/drivemode/spotify/SpotifyApi.java +++ b/SpotifyApi/src/main/java/com/drivemode/spotify/SpotifyApi.java @@ -19,7 +19,6 @@ import retrofit2.Callback; import retrofit2.Retrofit; - /** * Singleton object to deal with Spotify Web API and user authorization. * diff --git a/SpotifyApi/src/main/java/com/drivemode/spotify/SpotifyService.java b/SpotifyApi/src/main/java/com/drivemode/spotify/SpotifyService.java index 1b260bf..770b909 100644 --- a/SpotifyApi/src/main/java/com/drivemode/spotify/SpotifyService.java +++ b/SpotifyApi/src/main/java/com/drivemode/spotify/SpotifyService.java @@ -24,7 +24,7 @@ import java.util.Map; -import retrofit2.Callback; +import retrofit2.Call; import retrofit2.http.Body; import retrofit2.http.DELETE; import retrofit2.http.GET; @@ -34,7 +34,6 @@ import retrofit2.http.Query; import retrofit2.http.QueryMap; - public interface SpotifyService { /** @@ -42,247 +41,132 @@ public interface SpotifyService { */ @GET("/me") - public void getMe(Callback callback); - - @GET("/me") - public User getMe(); - - @GET("/user/{id}") - public void getUser(@Path("id") String userId, Callback callback); + public Call getMe(); @GET("/user/{id}") - public User getUser(@Path("id") String userId); + public Call getUser(@Path("id") String userId); /** * Playlists * */ @GET("/users/{id}/playlists") - public void getPlaylists(@Path("id") String userId, @Query("offset") int offset, @Query("limit") int limit, Callback> callback); - - @GET("/users/{id}/playlists") - public Pager getPlaylists(@Path("id") String userId, @Query("offset") int offset, @Query("limit") int limit); - - @GET("/users/{id}/playlists") - public void getPlaylists(@Path("id") String userId, Callback> callback); + public Call> getPlaylists(@Path("id") String userId, @Query("offset") int offset, @Query("limit") int limit); @GET("/users/{id}/playlists") - public Pager getPlaylists(@Path("id") String userId); - - @GET("/users/{user_id}/playlists/{playlist_id}") - public void getPlaylist(@Path("user_id") String userId, @Path("playlist_id") String playlistId, Callback callback); + public Call> getPlaylists(@Path("id") String userId); @GET("/users/{user_id}/playlists/{playlist_id}") - public Playlist getPlaylist(@Path("user_id") String userId, @Path("playlist_id") String playlistId); - - @GET("/users/{user_id}/playlists/{playlist_id}/tracks") - public void getPlaylistTracks(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Query("offset") int offset, @Query("limit") int limit, Callback> callback); - - @GET("/users/{user_id}/playlists/{playlist_id}/tracks") - public Pager getPlaylistTracks(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Query("offset") int offset, @Query("limit") int limit); + public Call getPlaylist(@Path("user_id") String userId, @Path("playlist_id") String playlistId); @GET("/users/{user_id}/playlists/{playlist_id}/tracks") - public void getPlaylistTracks(@Path("user_id") String userId, @Path("playlist_id") String playlistId, Callback> callback); + public Call> getPlaylistTracks(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Query("offset") int offset, @Query("limit") int limit); @GET("/users/{user_id}/playlists/{playlist_id}/tracks") - public Pager getPlaylistTracks(@Path("user_id") String userId, @Path("playlist_id") String playlistId); - + public Call> getPlaylistTracks(@Path("user_id") String userId, @Path("playlist_id") String playlistId); @POST("/users/{user_id}/playlists") - public void createPlaylist(@Path("user_id") String userId, @Query("name") String name, Callback callback); + public Call createPlaylist(@Path("user_id") String userId, @Query("name") String name); @POST("/users/{user_id}/playlists") - public Playlist createPlaylist(@Path("user_id") String userId, @Query("name") String name); - - @POST("/users/{user_id}/playlists") - public void createPlaylist(@Path("user_id") String userId, @Query("name") String name, @Query("public") boolean is_public, Callback callback); - - @POST("/users/{user_id}/playlists") - public Playlist createPlaylist(@Path("user_id") String userId, @Query("name") String name, @Query("public") boolean is_public); - - @POST("/users/{user_id}/playlists/{playlist_id}/tracks") - public void addTracksToPlaylist(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Query("uris") String trackUris, Callback callback); - - @POST("/users/{user_id}/playlists/{playlist_id}/tracks") - public SnapshotId addTracksToPlaylist(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Query("uris") String trackUris); + public Call createPlaylist(@Path("user_id") String userId, @Query("name") String name, @Query("public") boolean is_public); @POST("/users/{user_id}/playlists/{playlist_id}/tracks") - public void addTracksToPlaylist(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Query("uris") String trackUris, @Query("position") int position, Callback callback); + public Call addTracksToPlaylist(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Query("uris") String trackUris); @POST("/users/{user_id}/playlists/{playlist_id}/tracks") - public SnapshotId addTracksToPlaylist(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Query("uris") String trackUris, @Query("position") int position); + public Call addTracksToPlaylist(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Query("uris") String trackUris, @Query("position") int position); @DELETEWITHBODY("/users/{user_id}/playlists/{playlist_id}/tracks") - public void removeTracksFromPlaylist(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Body TracksToRemove tracksToRemove, Callback callback); + public Call removeTracksFromPlaylist(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Body TracksToRemove tracksToRemove); @DELETEWITHBODY("/users/{user_id}/playlists/{playlist_id}/tracks") - public SnapshotId removeTracksFromPlaylist(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Body TracksToRemove tracksToRemove); - - @DELETEWITHBODY("/users/{user_id}/playlists/{playlist_id}/tracks") - public void removeTracksFromPlaylist(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Body TracksToRemoveWithPosition tracksToRemoveWithPosition, Callback callback); - - @DELETEWITHBODY("/users/{user_id}/playlists/{playlist_id}/tracks") - public SnapshotId removeTracksFromPlaylist(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Body TracksToRemoveWithPosition tracksToRemoveWithPosition); + public Call removeTracksFromPlaylist(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Body TracksToRemoveWithPosition tracksToRemoveWithPosition); // todo: process status code and return boolean @PUT("/users/{user_id}/playlists/{playlist_id}/tracks") - public void replaceTracksInPlaylist(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Query("uris") String trackUris, Callback callback); - - // todo: process status code and return boolean - @PUT("/users/{user_id}/playlists/{playlist_id}/tracks") - public boolean replaceTracksInPlaylist(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Query("uris") String trackUris); + public Call replaceTracksInPlaylist(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Query("uris") String trackUris); // todo: process status code and return boolean @PUT("/users/{user_id}/playlists/{playlist_id}") - public void changePlaylistDetails(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Query("name") String name, Callback callback); + public Call changePlaylistDetails(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Query("name") String name); // todo: process status code and return boolean @PUT("/users/{user_id}/playlists/{playlist_id}") - public boolean changePlaylistDetails(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Query("name") String name); - - // todo: process status code and return boolean - @PUT("/users/{user_id}/playlists/{playlist_id}") - public void changePlaylistDetails(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Query("public") boolean is_public, Callback callback); - - // todo: process status code and return boolean - @PUT("/users/{user_id}/playlists/{playlist_id}") - public boolean changePlaylistDetails(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Query("public") boolean is_public); + public Call changePlaylistDetails(@Path("user_id") String userId, @Path("playlist_id") String playlistId, @Query("public") boolean is_public); /** * Albums * */ @GET("/albums/{id}") - public void getAlbum(@Path("id") String albumId, Callback callback); - - @GET("/albums/{id}") - public Album getAlbum(@Path("id") String albumId); - - @GET("/albums") - public void getAlbums(@Query("ids") String albumIds, Callback callback); + public Call getAlbum(@Path("id") String albumId); @GET("/albums") - public Albums getAlbums(@Query("ids") String albumIds); - - @GET("/albums/{id}/tracks") - public Pager getAlbumTracks(@Path("id") String albumId); - - @GET("/albums/{id}/tracks") - public void getAlbumTracks(@Path("id") String albumId, Callback> callback); + public Call getAlbums(@Query("ids") String albumIds); @GET("/albums/{id}/tracks") - public void getAlbumTracks(@Path("id") String albumId, @Query("offset") int offset, @Query("limit") int limit, Callback> callback); + public Call> getAlbumTracks(@Path("id") String albumId); @GET("/albums/{id}/tracks") - public Pager getAlbumTracks(@Path("id") String albumId, @Query("offset") int offset, @Query("limit") int limit); + public Call> getAlbumTracks(@Path("id") String albumId, @Query("offset") int offset, @Query("limit") int limit); /** * Artists * */ @GET("/artists/{id}/albums") - public void getArtistAlbums(@Path("id") String artistId, Callback> callback, @Query("offset") int offset, @Query("limit") int limit); - - @GET("/artists/{id}/albums") - public Pager getArtistAlbums(@Path("id") String artistId, @Query("offset") int offset, @Query("limit") int limit); + public Call> getArtistAlbums(@Path("id") String artistId, @Query("offset") int offset, @Query("limit") int limit); @GET("/artists/{id}/albums") - public void getArtistAlbums(@Path("id") String artistId, Callback> callback); - - @GET("/artists/{id}/albums") - public Pager getArtistAlbums(@Path("id") String artistId); - - @GET("/artists/{id}/top-tracks") - public void getArtistTopTrack(@Path("id") String artistId, @Query("offset") int offset, @Query("limit") int limit, Callback> callback); - - @GET("/artists/{id}/top-tracks") - public Pager getArtistTopTrack(@Path("id") String artistId, @Query("offset") int offset, @Query("limit") int limit); + public Call> getArtistAlbums(@Path("id") String artistId); @GET("/artists/{id}/top-tracks") - public void getArtistTopTrack(@Path("id") String artistId, Callback> callback); + public Call> getArtistTopTrack(@Path("id") String artistId, @Query("offset") int offset, @Query("limit") int limit); @GET("/artists/{id}/top-tracks") - public Pager getArtistTopTrack(@Path("id") String artistId); - - @GET("/artists/{id}/related-artists") - public void getRelatedArtists(@Path("id") String artistId, @Query("offset") int offset, @Query("limit") int limit, Callback> callback); + public Call> getArtistTopTrack(@Path("id") String artistId); @GET("/artists/{id}/related-artists") - public Pager getRelatedArtists(@Path("id") String artistId, @Query("offset") int offset, @Query("limit") int limit); + public Call> getRelatedArtists(@Path("id") String artistId, @Query("offset") int offset, @Query("limit") int limit); @GET("/artists/{id}/related-artists") - public void getRelatedArtists(@Path("id") String artistId, Callback> callback); - - @GET("/artists/{id}/related-artists") - public Pager getRelatedArtists(@Path("id") String artistId); - - @GET("/artists/{id}") - public void getArtist(@Path("id") String artistId, Callback callback); + public Call> getRelatedArtists(@Path("id") String artistId); @GET("/artists/{id}") - public Artist getArtist(@Path("id") String artistId); + public Call getArtist(@Path("id") String artistId); @GET("/artists") - public void getArtists(@Query("ids") String artistIds, Callback callback); - - @GET("/artists") - public Artists getArtists(@Query("ids") String artistIds); + public Call getArtists(@Query("ids") String artistIds); /** * Tracks * */ @GET("/tracks/{id}") - public void getTrack(@Path("id") String trackId, Callback callback); - - @GET("/tracks/{id}") - public Track getTrack(@Path("id") String trackId); + public Call getTrack(@Path("id") String trackId); @GET("/tracks") - public void getTracks(@Query("ids") String trackIds, Callback callback); - - @GET("/tracks") - public Tracks getTracks(@Query("ids") String trackIds); + public Call getTracks(@Query("ids") String trackIds); /** * Browse * */ @GET("/browse/featured-playlists") - public void getFeaturedPlaylists(Callback callback); - - @GET("/browse/featured-playlists") - public FeaturedPlaylists getFeaturedPlaylists(); - - @GET("/browse/featured-playlists") - public void getFeaturedPlaylists(@QueryMap Map options, Callback callback); - - @GET("/browse/featured-playlists") - public FeaturedPlaylists getFeaturedPlaylists(@QueryMap Map options); + public Call getFeaturedPlaylists(@QueryMap Map options); @GET("/browse/featured-playlists") - public void getFeaturedPlaylists(@QueryMap Map options, @Query("offset") int offset, @Query("limit") int limit, Callback callback); - - @GET("/browse/featured-playlists") - public FeaturedPlaylists getFeaturedPlaylists(@QueryMap Map options, @Query("offset") int offset, @Query("limit") int limit); - - @GET("/browse/new-releases") - public void getNewReleases(Callback callback); - - @GET("/browse/new-releases") - public NewReleases getNewReleases(); - - @GET("/browse/new-releases") - public void getNewReleases(@Query("country") String country, Callback callback); + public Call getFeaturedPlaylists(@QueryMap Map options, @Query("offset") int offset, @Query("limit") int limit); @GET("/browse/new-releases") - public NewReleases getNewReleases(@Query("country") String country); + public Call getNewReleases(); @GET("/browse/new-releases") - public void getNewReleases(@Query("country") String country, @Query("offset") int offset, @Query("limit") int limit, Callback callback); + public Call getNewReleases(@Query("country") String country); @GET("/browse/new-releases") - public NewReleases getNewReleases(@Query("country") String country, @Query("offset") int offset, @Query("limit") int limit); + public Call getNewReleases(@Query("country") String country, @Query("offset") int offset, @Query("limit") int limit); /** @@ -290,139 +174,71 @@ public interface SpotifyService { */ @GET("/me/tracks") - public void getMySavedTracks(Callback> callback); + public Call> getMySavedTracks(); @GET("/me/tracks") - public Pager getMySavedTracks(); - - @GET("/me/tracks") - public void getMySavedTracks(@Query("offset") int offset, @Query("limit") int limit, Callback> callback); - - @GET("/me/tracks") - public Pager getMySavedTracks(@Query("offset") int offset, @Query("limit") int limit); + public Call> getMySavedTracks(@Query("offset") int offset, @Query("limit") int limit); @GET("/me/tracks/contains") - public void containsMySavedTracks(@Query("ids") String ids, Callback callback); - - @GET("/me/tracks/contains") - public Boolean[] containsMySavedTracks(@Query("ids") String ids); - - // todo: process status code and return boolean - @PUT("/me/tracks") - public void addToMySavedTracks(@Query("ids") String ids, Callback callback); + public Call containsMySavedTracks(@Query("ids") String ids); // todo: process status code and return boolean @PUT("/me/tracks") - public boolean addToMySavedTracks(@Query("ids") String ids); - - // todo: process status code and return boolean - @DELETE("/me/tracks") - public void removeFromMySavedTracks(@Query("ids") String ids, Callback callback); + public Call addToMySavedTracks(@Query("ids") String ids); // todo: process status code and return boolean @DELETE("/me/tracks") - public boolean removeFromMySavedTracks(@Query("ids") String ids); + public Call removeFromMySavedTracks(@Query("ids") String ids); /** * Search * */ @GET("/search?type=track") - public void searchTracks(@Query("q") String q, Callback callback); - - @GET("/search?type=track") - public TracksPager searchTracks(@Query("q") String q); - - @GET("/search?type=track") - public void searchTracks(@Query("q") String q, @Query("market") String market, Callback callback); + public Call searchTracks(@Query("q") String q); @GET("/search?type=track") - public TracksPager searchTracks(@Query("q") String q, @Query("market") String market); + public Call searchTracks(@Query("q") String q, @Query("market") String market); @GET("/search?type=track") - public void searchTracks(@Query("q") String q, @Query("offset") int offset, @Query("limit") int limit, Callback callback); + public Call searchTracks(@Query("q") String q, @Query("offset") int offset, @Query("limit") int limit); @GET("/search?type=track") - public TracksPager searchTracks(@Query("q") String q, @Query("offset") int offset, @Query("limit") int limit); - - @GET("/search?type=track") - public void searchTracks(@Query("q") String q, @Query("market") String market, @Query("offset") int offset, @Query("limit") int limit, Callback callback); - - @GET("/search?type=track") - public TracksPager searchTracks(@Query("q") String q, @Query("market") String market, @Query("offset") int offset, @Query("limit") int limit); - - - @GET("/search?type=artist") - public void searchArtists(@Query("q") String q, Callback callback); - - @GET("/search?type=artist") - public ArtistsPager searchArtists(@Query("q") String q); - - @GET("/search?type=artist") - public void searchArtists(@Query("q") String q, @Query("market") String market, Callback callback); - - @GET("/search?type=artist") - public ArtistsPager searchArtists(@Query("q") String q, @Query("market") String market); + public Call searchTracks(@Query("q") String q, @Query("market") String market, @Query("offset") int offset, @Query("limit") int limit); @GET("/search?type=artist") - public void searchArtists(@Query("q") String q, @Query("offset") int offset, @Query("limit") int limit, Callback callback); + public Call searchArtists(@Query("q") String q); @GET("/search?type=artist") - public ArtistsPager searchArtists(@Query("q") String q, @Query("offset") int offset, @Query("limit") int limit); + public Call searchArtists(@Query("q") String q, @Query("market") String market); @GET("/search?type=artist") - public void searchArtists(@Query("q") String q, @Query("market") String market, @Query("offset") int offset, @Query("limit") int limit, Callback callback); + public Call searchArtists(@Query("q") String q, @Query("offset") int offset, @Query("limit") int limit); @GET("/search?type=artist") - public ArtistsPager searchArtists(@Query("q") String q, @Query("market") String market, @Query("offset") int offset, @Query("limit") int limit); - - - @GET("/search?type=album") - public void searchAlbums(@Query("q") String q, Callback callback); + public Call searchArtists(@Query("q") String q, @Query("market") String market, @Query("offset") int offset, @Query("limit") int limit); @GET("/search?type=album") - public AlbumsPager searchAlbums(@Query("q") String q); + public Call searchAlbums(@Query("q") String q); @GET("/search?type=album") - public void searchAlbums(@Query("q") String q, @Query("market") String market, Callback callback); + public Call searchAlbums(@Query("q") String q, @Query("market") String market); @GET("/search?type=album") - public AlbumsPager searchAlbums(@Query("q") String q, @Query("market") String market); + public Call searchAlbums(@Query("q") String q, @Query("offset") int offset, @Query("limit") int limit); @GET("/search?type=album") - public void searchAlbums(@Query("q") String q, @Query("offset") int offset, @Query("limit") int limit, Callback callback); - - @GET("/search?type=album") - public AlbumsPager searchAlbums(@Query("q") String q, @Query("offset") int offset, @Query("limit") int limit); - - @GET("/search?type=album") - public void searchAlbums(@Query("q") String q, @Query("market") String market, @Query("offset") int offset, @Query("limit") int limit, Callback callback); - - @GET("/search?type=album") - public AlbumsPager searchAlbums(@Query("q") String q, @Query("market") String market, @Query("offset") int offset, @Query("limit") int limit); - - - @GET("/search?type=playlist") - public void searchPlaylists(@Query("q") String q, Callback callback); - - @GET("/search?type=playlist") - public PlaylistsPager searchPlaylists(@Query("q") String q); - - @GET("/search?type=playlist") - public void searchPlaylists(@Query("q") String q, @Query("market") String market, Callback callback); - - @GET("/search?type=playlist") - public PlaylistsPager searchPlaylists(@Query("q") String q, @Query("market") String market); + public Call searchAlbums(@Query("q") String q, @Query("market") String market, @Query("offset") int offset, @Query("limit") int limit); @GET("/search?type=playlist") - public void searchPlaylists(@Query("q") String q, @Query("offset") int offset, @Query("limit") int limit, Callback callback); + public Call searchPlaylists(@Query("q") String q); @GET("/search?type=playlist") - public PlaylistsPager searchPlaylists(@Query("q") String q, @Query("offset") int offset, @Query("limit") int limit); + public Call searchPlaylists(@Query("q") String q, @Query("market") String market); @GET("/search?type=playlist") - public void searchPlaylists(@Query("q") String q, @Query("market") String market, @Query("offset") int offset, @Query("limit") int limit, Callback callback); + public Call searchPlaylists(@Query("q") String q, @Query("offset") int offset, @Query("limit") int limit); @GET("/search?type=playlist") - public PlaylistsPager searchPlaylists(@Query("q") String q, @Query("market") String market, @Query("offset") int offset, @Query("limit") int limit); + public Call searchPlaylists(@Query("q") String q, @Query("market") String market, @Query("offset") int offset, @Query("limit") int limit); } diff --git a/app/src/main/java/com/drivemode/spotify/app/MainActivity.java b/app/src/main/java/com/drivemode/spotify/app/MainActivity.java index 65f0c3e..698f4b7 100644 --- a/app/src/main/java/com/drivemode/spotify/app/MainActivity.java +++ b/app/src/main/java/com/drivemode/spotify/app/MainActivity.java @@ -62,7 +62,8 @@ public Loader> onCreateLoader(int id, Bundle args) { @Override public void onLoadFinished(Loader> loader, Response data) { Toast.makeText(getApplicationContext(), "Logged in as " + data.getResult().id, Toast.LENGTH_SHORT).show(); - SpotifyApi.getInstance().getApiService().getPlaylists(data.getResult().id, new Callback>() { + Call> call = SpotifyApi.getInstance().getApiService().getPlaylists(data.getResult().id); + call.enqueue(new Callback>() { @Override public void onResponse(Call> call, retrofit2.Response> response) { Log.v(TAG, "success"); @@ -85,7 +86,7 @@ public SelfLoader(Context context, SpotifyApi api) { @Override public User call(SpotifyService service) throws Exception { - return service.getMe(); + return service.getMe().execute().body(); } } }