package com.heyzap.sdk; import java.util.Map; import java.util.concurrent.Executors; import java.util.concurrent.ThreadPoolExecutor; import android.content.Context; import com.heyzap.http.AsyncHttpClient; import com.heyzap.http.AsyncHttpResponseHandler; import com.heyzap.http.RequestParams; import com.heyzap.http.SDKCookieStore; class SDKRestClient { private static AsyncHttpClient client; private static ThreadPoolExecutor cacheThreadPool; private static SDKCookieStore cookieStore; private static final String USER_AGENT = "Heyzap Android Client"; public static final String DOMAIN = "heyzap.com"; public static final String BASE_URL = "http://" + DOMAIN; private static final String BASE_ENDPOINT = "/in_game_api/sdk/"; private static final int RESPONSE_CACHE = 23; public static final int API_STATUS_NOT_LOGGED_IN = 504; // Static initialization static { cacheThreadPool = (ThreadPoolExecutor)Executors.newFixedThreadPool(1); client = new AsyncHttpClient(); client.setThreadPool((ThreadPoolExecutor)Executors.newFixedThreadPool(1)); } public static synchronized void init(Context context){ if(cookieStore == null){ cookieStore = new SDKCookieStore(context); client.setCookieStore(cookieStore); } } // GET requests public static void get(Context context, String url, AsyncHttpResponseHandler responseHandler) { get(context, url, null, responseHandler); } public static void get(Context context, String url, RequestParams params) { get(context, url, params, null); } public static void get(final Context context, final String url, final RequestParams params, final AsyncHttpResponseHandler responseHandler) { init(context); RequestParams augmentedParams = augmentParams(params, context); Logger.log("params", augmentedParams); client.get(context, getAbsoluteUrl(url), augmentedParams, responseHandler); } // POST requests public static void post(Context context, String url, AsyncHttpResponseHandler responseHandler) { post(context, url, null, responseHandler); } public static void post(Context context, String url, RequestParams params) { post(context, url, params, null); } public static void post(final Context context, final String url, final RequestParams params, final AsyncHttpResponseHandler responseHandler) { init(context); RequestParams augmentedParams = augmentParams(params, context); Logger.log("params", augmentedParams); String finalUrl = getAbsoluteUrl(url); Logger.log("using url", finalUrl); client.post(context, finalUrl, augmentedParams, responseHandler); } // Cleanup public static void cancelRequests(Context context) { client.cancelRequests(context, true); } private static String getAbsoluteUrl(String relativeUrl) { if(relativeUrl != null && relativeUrl.startsWith("/")){ return BASE_URL + relativeUrl; }else if(relativeUrl != null && relativeUrl.startsWith("http://")){ return relativeUrl; }else{ return BASE_URL + BASE_ENDPOINT + relativeUrl; } } public static RequestParams augmentParams(RequestParams params, Context context) { if(params == null) { params = new RequestParams(); } for (Map.Entry<String, String> entry : Utils.extraParams(context).entrySet()) { params.put(entry.getKey(), entry.getValue()); } return params; } }