
co.fusionx.spotify.async.AsyncWebClient Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of spotify-web-api Show documentation
Show all versions of spotify-web-api Show documentation
Library which allows easy async and sync access to the Spotify Web APIs
The newest version!
package co.fusionx.spotify.async;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.common.util.concurrent.MoreExecutors;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.Executors;
import co.fusionx.spotify.model.Album;
import co.fusionx.spotify.model.Artist;
import co.fusionx.spotify.model.PagingObject;
import co.fusionx.spotify.model.SearchResult;
import co.fusionx.spotify.model.SimpleAlbum;
import co.fusionx.spotify.model.SimpleTrack;
import co.fusionx.spotify.model.Track;
import co.fusionx.spotify.optional.artist.OptionalAlbumTracks;
import co.fusionx.spotify.optional.artist.OptionalArtistAlbums;
import co.fusionx.spotify.optional.search.OptionalSearch;
import co.fusionx.spotify.sync.SyncClient;
import co.fusionx.spotify.sync.SyncWebClient;
public class AsyncWebClient implements AsyncClient {
private final SyncClient mSyncClient;
private final ListeningExecutorService mExecutorService;
public AsyncWebClient() {
mSyncClient = new SyncWebClient();
mExecutorService = MoreExecutors.listeningDecorator(Executors.newSingleThreadExecutor());
}
@Override
public ListenableFuture getAlbum(final String albumId) {
return mExecutorService.submit(new Callable() {
@Override
public Album call() throws Exception {
return mSyncClient.getAlbum(albumId);
}
});
}
@Override
public ListenableFuture> getAlbums(final Collection albumIds) {
return mExecutorService.submit(new Callable>() {
@Override
public List extends Album> call() throws Exception {
return mSyncClient.getAlbums(albumIds);
}
});
}
@Override
public ListenableFuture> getAlbumTracks(
final String albumId) {
return mExecutorService.submit(new Callable>() {
@Override
public PagingObject extends SimpleTrack> call() throws Exception {
return mSyncClient.getAlbumTracks(albumId);
}
});
}
@Override
public ListenableFuture> getAlbumTracks(
final String albumId,
final OptionalAlbumTracks tracks) {
return mExecutorService.submit(new Callable>() {
@Override
public PagingObject extends SimpleTrack> call() throws Exception {
return mSyncClient.getAlbumTracks(albumId, tracks);
}
});
}
@Override
public ListenableFuture getArtist(final String artistId) {
return mExecutorService.submit(new Callable() {
@Override
public Artist call() throws Exception {
return mSyncClient.getArtist(artistId);
}
});
}
@Override
public ListenableFuture> getArtists(final Collection artistIds) {
return mExecutorService.submit(new Callable>() {
@Override
public List extends Artist> call() throws Exception {
return mSyncClient.getArtists(artistIds);
}
});
}
@Override
public ListenableFuture> getArtistAlbums(
final String artistId) {
return mExecutorService.submit(new Callable>() {
@Override
public PagingObject extends SimpleAlbum> call() throws Exception {
return mSyncClient.getArtistAlbums(artistId);
}
});
}
@Override
public ListenableFuture> getArtistAlbums(
final String artistId,
final OptionalArtistAlbums artistAlbums) {
return mExecutorService.submit(new Callable>() {
@Override
public PagingObject extends SimpleAlbum> call() throws Exception {
return mSyncClient.getArtistAlbums(artistId, artistAlbums);
}
});
}
@Override
public ListenableFuture> getArtistTopTracks(final String artistId,
final String country) {
return mExecutorService.submit(new Callable>() {
@Override
public List extends Track> call() throws Exception {
return mSyncClient.getArtistTopTracks(artistId, country);
}
});
}
@Override
public ListenableFuture> getRelatedArtists(final String artistId) {
return mExecutorService.submit(new Callable>() {
@Override
public List extends Artist> call() throws Exception {
return mSyncClient.getRelatedArtists(artistId);
}
});
}
@Override
public ListenableFuture
© 2015 - 2025 Weber Informatics LLC | Privacy Policy