package com.mobmonkey.mobmonkeysdk.asynctasks;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.SocketException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.conn.ConnectTimeoutException;
import org.apache.http.conn.params.ConnManagerParams;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import com.mobmonkey.mobmonkeysdk.utils.MMCallback;
import com.mobmonkey.mobmonkeysdk.utils.MMSDKConstants;
import android.os.AsyncTask;
public class MMPutAsyncTask extends AsyncTask<HttpPut, Void, String>{
private StringBuilder stringBuilder;
private MMCallback mmCallback;
/**
* Constructor that takes in a {@link MMCallback} to be invoke after the background task is finished
* @param mmc
*/
public MMPutAsyncTask(MMCallback mmCallback) {
this.mmCallback = mmCallback;
}
/*
* (non-Javadoc)
* @see android.os.AsyncTask#doInBackground(Params[])
*/
@Override
protected String doInBackground(HttpPut... params) {
stringBuilder = new StringBuilder();
try {
HttpClient httpClient = new DefaultHttpClient();
HttpParams httpParams = httpClient.getParams();
HttpConnectionParams.setConnectionTimeout(httpParams, MMSDKConstants.TIMEOUT_CONNECTION);
HttpConnectionParams.setSoTimeout(httpParams, MMSDKConstants.TIMEOUT_CONNECTION);
ConnManagerParams.setTimeout(httpParams, MMSDKConstants.TIMEOUT_CONNECTION);
HttpResponse httpResponse = httpClient.execute(params[0]);
HttpEntity httpEntity = httpResponse.getEntity();
InputStream inStream = httpEntity.getContent();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inStream, "iso-8859-1"), 8);
String line = MMSDKConstants.DEFAULT_STRING_EMPTY;
while((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line + MMSDKConstants.DEFAULT_STRING_NEWLINE);
}
inStream.close();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (ConnectTimeoutException e) {
e.printStackTrace();
return MMSDKConstants.CONNECTION_TIMED_OUT;
} catch (SocketException e) {
e.printStackTrace();
if(e.getMessage().equals(MMSDKConstants.OPERATION_TIMED_OUT)) {
return MMSDKConstants.CONNECTION_TIMED_OUT;
}
} catch (IOException e) {
e.printStackTrace();
}
return stringBuilder.toString();
}
/*
* (non-Javadoc)
* @see android.os.AsyncTask#onPostExecute(java.lang.Object)
*/
@Override
protected void onPostExecute(String result) {
mmCallback.processCallback(result);
super.onPostExecute(result);
}
}