package com.johnlam.soundcloud;
import java.io.InputStream;
import java.util.ArrayList;
import com.johnlam.soundcloud.object.CommentObject;
import com.johnlam.soundcloud.object.TrackObject;
import com.ypyproductions.utils.DBLog;
import com.ypyproductions.utils.StringUtils;
import com.ypyproductions.webservice.DownloadUtils;
/**
*
*
* @author:YPY Productions
* @Skype: baopfiev_k50
* @Mobile : +84 983 028 786
* @Email: dotrungbao@gmail.com
* @Website: www.ypyproductions.com
* @Project:AndroidCloundMusicPlayer
* @Date:Dec 14, 2014
*
*/
public class SoundCloudAPI implements ISoundCloudConstants {
private static final String TAG = SoundCloudAPI.class.getSimpleName();
private String clientId;
private String clientSecret;
private String mPrefixClientId;
public SoundCloudAPI(String clientId, String clientSecret) {
this.clientId = clientId;
this.clientSecret = clientSecret;
this.mPrefixClientId = String.format(FORMAT_CLIENT_ID, clientId);
}
public ArrayList<TrackObject> getListTrackObjectsByGenre(String genre,int offset, int limit){
StringBuilder mStringBuilder = new StringBuilder();
mStringBuilder.append(URL_API);
mStringBuilder.append(METHOD_TRACKS);
mStringBuilder.append(JSON_PREFIX);
mStringBuilder.append(mPrefixClientId);
mStringBuilder.append(String.format(FILTER_GENRE, genre));
mStringBuilder.append(String.format(OFFSET, String.valueOf(offset),String.valueOf(limit)));
String url = mStringBuilder.toString();
mStringBuilder=null;
DBLog.d(TAG, "==============>getListTrackObjectsByGenre="+url);
InputStream data = DownloadUtils.download(url);
if(data!=null){
return SoundCloudJsonParsingUtils.parsingListTrackObject(data);
}
return null;
}
public ArrayList<TrackObject> getListTrackObjectsByQuery(String query,int offset, int limit){
StringBuilder mStringBuilder = new StringBuilder();
mStringBuilder.append(URL_API);
mStringBuilder.append(METHOD_TRACKS);
mStringBuilder.append(JSON_PREFIX);
mStringBuilder.append(mPrefixClientId);
mStringBuilder.append(String.format(FILTER_QUERY, query));
mStringBuilder.append(String.format(OFFSET, String.valueOf(offset),String.valueOf(limit)));
String url = mStringBuilder.toString();
mStringBuilder=null;
DBLog.d(TAG, "==============>getListTrackObjectsByQuery="+url);
InputStream data = DownloadUtils.download(url);
if(data!=null){
return SoundCloudJsonParsingUtils.parsingListTrackObject(data);
}
return null;
}
public ArrayList<TrackObject> getListTrackObjectsByTypes(String types,int offset, int limit){
StringBuilder mStringBuilder = new StringBuilder();
mStringBuilder.append(URL_API);
mStringBuilder.append(METHOD_TRACKS);
mStringBuilder.append(JSON_PREFIX);
mStringBuilder.append(mPrefixClientId);
mStringBuilder.append(String.format(FILTER_TYPES, types));
mStringBuilder.append(String.format(OFFSET, String.valueOf(offset),String.valueOf(limit)));
String url = mStringBuilder.toString();
mStringBuilder=null;
DBLog.d(TAG, "==============>getListTrackObjectsByQuery="+url);
InputStream data = DownloadUtils.download(url);
if(data!=null){
return SoundCloudJsonParsingUtils.parsingListTrackObject(data);
}
return null;
}
public ArrayList<TrackObject> getListTrackObjectsOfUser(long userId){
StringBuilder mStringBuilder = new StringBuilder();
mStringBuilder.append(URL_API);
mStringBuilder.append(METHOD_USER+"/");
mStringBuilder.append(String.valueOf(userId)+"/");
mStringBuilder.append(METHOD_TRACKS);
mStringBuilder.append(JSON_PREFIX);
mStringBuilder.append(mPrefixClientId);
String url = mStringBuilder.toString();
mStringBuilder=null;
DBLog.d(TAG, "==============>getListTrackObjectsOfUser="+url);
InputStream data = DownloadUtils.download(url);
if(data!=null){
return SoundCloudJsonParsingUtils.parsingListTrackObject(data);
}
return null;
}
public ArrayList<CommentObject> getListCommentObject(long trackId){
StringBuilder mStringBuilder = new StringBuilder();
mStringBuilder.append(URL_API);
mStringBuilder.append(METHOD_TRACKS+"/");
mStringBuilder.append(String.valueOf(trackId)+"/");
mStringBuilder.append(METHOD_COMMENTS);
mStringBuilder.append(JSON_PREFIX);
mStringBuilder.append(mPrefixClientId);
String url = mStringBuilder.toString();
mStringBuilder=null;
DBLog.d(TAG, "==============>getListCommentObject="+url);
InputStream data = DownloadUtils.download(url);
if(data!=null){
return SoundCloudJsonParsingUtils.parsingListCommentObject(data);
}
return null;
}
public TrackObject getTrackObject(long id){
StringBuilder mStringBuilder = new StringBuilder();
mStringBuilder.append(URL_API);
mStringBuilder.append(METHOD_TRACKS);
mStringBuilder.append("/");
mStringBuilder.append(String.valueOf(id));
mStringBuilder.append(JSON_PREFIX);
mStringBuilder.append(mPrefixClientId);
String url = mStringBuilder.toString();
mStringBuilder=null;
DBLog.d(TAG, "==============>getTrackObject="+url);
String data = DownloadUtils.downloadString(url);
if(!StringUtils.isEmptyString(data)){
return SoundCloudJsonParsingUtils.parsingTrackObject(data);
}
return null;
}
public String getClientId() {
return clientId;
}
public void setClientId(String clientId) {
this.clientId = clientId;
}
public String getClientSecret() {
return clientSecret;
}
public void setClientSecret(String clientSecret) {
this.clientSecret = clientSecret;
}
}