package net.rdrei.android.scdl2.api.service; import java.net.HttpURLConnection; import java.net.MalformedURLException; import net.rdrei.android.scdl2.ApplicationSoundcloudApiQueryFactory; import net.rdrei.android.scdl2.api.APIException; import net.rdrei.android.scdl2.api.SoundcloudApiQuery.HttpMethod; import net.rdrei.android.scdl2.api.SoundcloudApiService; import net.rdrei.android.scdl2.api.URLWrapper; import net.rdrei.android.scdl2.api.entity.TrackEntity; import roboguice.util.Ln; import com.google.gson.reflect.TypeToken; import com.google.inject.Inject; public class TrackService extends SoundcloudApiService { private static final String RESOURCE_URL = "/tracks/"; private static final TypeToken<TrackEntity> TYPE_TOKEN = new TypeToken<TrackEntity>() { }; @Inject private ApplicationSoundcloudApiQueryFactory mTrackQueryFactory; /** * Resolves a track based on its unique soundcloud ID. * * @param id Numeric ID of the song. * @return * @throws APIException */ public TrackEntity getTrack(final String id) throws APIException { // I'm not sure if escaping here makes any sense. 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 mTrackQueryFactory.create(url, HttpMethod.GET, TYPE_TOKEN) .execute(HttpURLConnection.HTTP_OK); } }