package com.zhan_dui.data;
import android.annotation.SuppressLint;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.JsonHttpResponseHandler;
import com.zhan_dui.utils.ApiUtils;
import java.util.TreeMap;
@SuppressLint("DefaultLocale")
public class ApiConnector {
private static ApiConnector mInstance;
private static final String INIT_REQUEST_URL = "http://i.animetaste.net/api/setup/?api_key=%s×tamp=%s&anime=%d&feature=%d&advert=%d&access_token=%s";
private static final String ANIMATION_REQUEST_URL = "http://i.animetaste.net/api/animelist_v4/?api_key=%s×tamp=%s&page=%d&access_token=%s";
private static final String ANIMATION_RANDOM_URL = "http://i.animetaste.net/api/animelist_v4/?api_key=%s×tamp=%d&order=random&limit=%d&access_token=%s";
private static final String ANIMATION_DETAIL_URL = "http://i.animetaste.net/api/animelist_v4/?api_key=%s×tamp=%d&vid=%d&access_token=%s";
private static final String CATEGORY_REQUEST_URL = "http://i.animetaste.net/api/animelist_v4/?api_key=%s×tamp=%d&page=%d&category=%d&limit=%d&access_token=%s";
private static final String API_KEY = "android";
private static final String API_SECRET = "7763079ba6abf342a99ab5a1dfa87ba8";
public static enum RequestType {
INIT,ALL,RANDOM,DETAIL,CATEGORY
}
private ApiConnector() {
};
public static ApiConnector instance() {
if (mInstance == null) {
mInstance = new ApiConnector();
}
return mInstance;
}
private void get(String request, JsonHttpResponseHandler handler) {
AsyncHttpClient client = new AsyncHttpClient();
client.setTimeout(10000);
client.get(request, null, handler);
}
public void getInitData(int animeCount,int featureCount,int advertiseCount,JsonHttpResponseHandler handler){
long timeStamp = System.currentTimeMillis()/1000L;
TreeMap<String,String> params = new TreeMap<String, String>();
params.put("api_key",API_KEY);
params.put("timestamp",String.valueOf(timeStamp));
params.put("anime",String.valueOf(animeCount));
params.put("feature",String.valueOf(featureCount));
params.put("advert",String.valueOf(advertiseCount));
String access_token = ApiUtils.getAccessToken(params,API_SECRET);
String request = String.format(INIT_REQUEST_URL,API_KEY,timeStamp,animeCount,featureCount,advertiseCount,access_token);
get(request, handler);
}
public void getList(int page, JsonHttpResponseHandler handler) {
long timeStamp = System.currentTimeMillis() / 1000L;
TreeMap<String, String> params = new TreeMap<String, String>();
params.put("api_key", API_KEY);
params.put("timestamp", String.valueOf(timeStamp));
params.put("page", String.valueOf(page));
String access_token = ApiUtils.getAccessToken(params, API_SECRET);
String request = String.format(ANIMATION_REQUEST_URL, API_KEY, timeStamp,
page, access_token);
get(request, handler);
}
public void getRandom(int count, JsonHttpResponseHandler handler) {
long timeStamp = System.currentTimeMillis() / 1000L;
TreeMap<String, String> params = new TreeMap<String, String>();
params.put("api_key", API_KEY);
params.put("timestamp", String.valueOf(timeStamp));
params.put("order", "random");
params.put("limit", String.valueOf(count));
String access_token = ApiUtils.getAccessToken(params, API_SECRET);
String request = String.format(ANIMATION_RANDOM_URL, API_KEY, timeStamp,
count, access_token);
get(request, handler);
}
public void getDetail(int vid,JsonHttpResponseHandler handler){
long timestamp = System.currentTimeMillis()/1000L;
TreeMap<String,String> params = new TreeMap<String,String>();
params.put("api_key",API_KEY);
params.put("timestamp",String.valueOf(timestamp));
params.put("vid",String.valueOf(vid));
String access_token = ApiUtils.getAccessToken(params,API_SECRET);
String request = String.format(ANIMATION_DETAIL_URL,API_KEY,timestamp,vid,access_token);
get(request, handler);
}
public void getCategory(int categoryId,int page,int count,JsonHttpResponseHandler handler){
long timeStamp = System.currentTimeMillis() / 1000L;
TreeMap<String,String> params = new TreeMap<String, String>();
params.put("api_key",API_KEY);
params.put("timestamp",String.valueOf(timeStamp));
params.put("page",String.valueOf(page));
params.put("category",String.valueOf(categoryId));
params.put("limit",String.valueOf(count));
String access_token = ApiUtils.getAccessToken(params,API_SECRET);
String request = String.format(CATEGORY_REQUEST_URL,API_KEY,timeStamp,page,categoryId,count,access_token);
get(request, handler);
}
private static final String RECOMMEND_ALL_REQUEST = "http://i.animetaste.net/api/animelist_v4/?api_key=%s×tamp=%d&feature=1&limit=%d&access_token=%s";
private static final String RECOMMEND_CATEGORY_REQUEST = "http://i.animetaste.net/api/animelist_v4/?api_key=%s×tamp=%d&category=%d&feature=1&limit=%d&access_token=%s";
public void getALLRecommend(int count,JsonHttpResponseHandler handler){
long timestamp = System.currentTimeMillis()/1000L;
TreeMap<String,String> params = new TreeMap<String, String>();
params.put("api_key",API_KEY);
params.put("timestamp",String.valueOf(timestamp));
params.put("limit",String.valueOf(count));
params.put("feature",String.valueOf(1));
String access_token = ApiUtils.getAccessToken(params,API_SECRET);
String request = String.format(RECOMMEND_ALL_REQUEST,API_KEY,timestamp,count,access_token);
get(request,handler);
}
public void getCategoryRecommend(int categoryId,int count,JsonHttpResponseHandler handler){
long timestamp = System.currentTimeMillis()/1000L;
TreeMap<String,String> params = new TreeMap<String, String>();
params.put("api_key",API_KEY);
params.put("timestamp",String.valueOf(timestamp));
params.put("limit",String.valueOf(count));
params.put("feature",String.valueOf(1));
params.put("category",String.valueOf(categoryId));
String access_token = ApiUtils.getAccessToken(params,API_SECRET);
String request = String.format(RECOMMEND_CATEGORY_REQUEST,API_KEY,timestamp,categoryId,count,access_token);
get(request,handler);
}
}