package net.rdrei.android.scdl2.api.service;
import com.google.gson.reflect.TypeToken;
import com.google.inject.Inject;
import net.rdrei.android.scdl2.ApplicationSoundcloudApiQueryFactory;
import net.rdrei.android.scdl2.api.APIException;
import net.rdrei.android.scdl2.api.SoundcloudApiQuery;
import net.rdrei.android.scdl2.api.SoundcloudApiService;
import net.rdrei.android.scdl2.api.URLWrapper;
import net.rdrei.android.scdl2.api.entity.PlaylistEntity;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import roboguice.util.Ln;
/**
* Resolves a playlist by its ID to a PlaylistEntity
*/
public class PlaylistService extends SoundcloudApiService {
private static final String RESOURCE_URL = "/playlists/";
private static final TypeToken<PlaylistEntity> TYPE_TOKEN = new TypeToken<PlaylistEntity>() {
};
@Inject
private ApplicationSoundcloudApiQueryFactory mPlaylistQueryFactory;
/**
* Resolves a playlist based on its unique soundcloud ID.
*
* @param id Numeric ID of the playlist.
* @return
* @throws APIException
*/
public PlaylistEntity getPlaylist(final String id) throws APIException {
final URLWrapper url;
try {
url = this.buildUrl(RESOURCE_URL + id);
} catch (final MalformedURLException e) {
Ln.e(e);
throw new IllegalArgumentException("URL creation failed!", e);
}
return mPlaylistQueryFactory.create(url, SoundcloudApiQuery.HttpMethod.GET, TYPE_TOKEN)
.execute(HttpURLConnection.HTTP_OK);
}
}