package com.catchnotes.api;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URLEncoder;
import org.apache.http.HttpHost;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
import org.apache.http.HttpVersion;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.params.HttpClientParams;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.params.HttpProtocolParams;
import org.apache.http.protocol.HTTP;
import org.apache.http.protocol.HttpContext;
import android.content.Context;
import android.net.http.AndroidHttpClient;
import android.os.Build;
protected String mEncodedAccessToken;
protected HttpClient mHttpClient;
public static VersionedCatchHttpClient
newInstance(String userAgent, Context context) {
VersionedCatchHttpClient client;
if (Integer.parseInt(Build.VERSION.SDK) < Build.VERSION_CODES.FROYO) {
client = new PreFroyoCatchHttpClient(userAgent);
} else {
client = new CatchHttpClient(userAgent, context);
}
return client;
}
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setUserAgent(params, userAgent);
HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
HttpConnectionParams.setStaleCheckingEnabled(params, false);
HttpConnectionParams.setConnectionTimeout(params, 20000);
HttpConnectionParams.setSoTimeout(params, 20000);
HttpConnectionParams.setSocketBufferSize(params, 8192);
mHttpClient = new DefaultHttpClient(params);
}
}
mHttpClient = AndroidHttpClient.newInstance(userAgent, context);
HttpParams httpParams = mHttpClient.getParams();
HttpClientParams.setRedirecting(httpParams, true);
HttpProtocolParams.setVersion(httpParams, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(httpParams, HTTP.UTF_8);
}
((AndroidHttpClient) mHttpClient).close();
}
}
}
try {
mEncodedAccessToken = "access_token=" + URLEncoder.encode(accessToken, HTTP.UTF_8);
} catch (UnsupportedEncodingException e) {
throw new AssertionError(e);
}
}
if (mEncodedAccessToken != null) {
String query = httpUriRequest.getURI().getQuery();
if (query == null || query.length() == 0) {
((HttpRequestBase) httpUriRequest).setURI(URI.create(httpUriRequest.getURI() + "?" + mEncodedAccessToken));
} else {
((HttpRequestBase) httpUriRequest).setURI(URI.create(httpUriRequest.getURI() + "&" + mEncodedAccessToken));
}
}
}
return mHttpClient.getParams();
}
return mHttpClient.getConnectionManager();
}
public HttpResponse
execute(HttpUriRequest httpUriRequest)
throws IOException, ClientProtocolException {
addAccessTokenToHttpUriRequest(httpUriRequest);
return mHttpClient.execute(httpUriRequest);
}
public HttpResponse
execute(HttpUriRequest httpUriRequest, HttpContext httpContext)
throws IOException, ClientProtocolException {
addAccessTokenToHttpUriRequest(httpUriRequest);
return mHttpClient.execute(httpUriRequest, httpContext);
}
public HttpResponse
execute(HttpHost httpHost, HttpRequest httpRequest)
throws IOException, ClientProtocolException {
addAccessTokenToHttpUriRequest((HttpUriRequest) httpRequest);
return mHttpClient.execute(httpHost, httpRequest);
}
public HttpResponse
execute(HttpHost httpHost, HttpRequest httpRequest, HttpContext httpContext)
throws IOException, ClientProtocolException {
addAccessTokenToHttpUriRequest((HttpUriRequest) httpRequest);
return mHttpClient.execute(httpHost, httpRequest, httpContext);
}
public <T> T
execute(HttpUriRequest httpUriRequest, ResponseHandler<?
extends T> responseHandler)
throws IOException, ClientProtocolException {
addAccessTokenToHttpUriRequest(httpUriRequest);
return mHttpClient.execute(httpUriRequest, responseHandler);
}
public <T> T
execute(HttpUriRequest httpUriRequest, ResponseHandler<?
extends T> responseHandler, HttpContext httpContext)
throws IOException, ClientProtocolException {
addAccessTokenToHttpUriRequest(httpUriRequest);
return mHttpClient.execute(httpUriRequest, responseHandler, httpContext);
}
public <T> T
execute(HttpHost httpHost, HttpRequest httpRequest, ResponseHandler<?
extends T> responseHandler)
throws IOException, ClientProtocolException {
addAccessTokenToHttpUriRequest((HttpUriRequest) httpRequest);
return mHttpClient.execute(httpHost, httpRequest, responseHandler);
}
public <T> T
execute(HttpHost httpHost, HttpRequest httpRequest, ResponseHandler<?
extends T> responseHandler, HttpContext httpContext)
throws IOException, ClientProtocolException {
addAccessTokenToHttpUriRequest((HttpUriRequest) httpRequest);
return mHttpClient.execute(httpHost, httpRequest, responseHandler, httpContext);
}
}