summaryrefslogtreecommitdiffstats
path: root/mobile/android/thirdparty/com/adjust/sdk/RequestHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/thirdparty/com/adjust/sdk/RequestHandler.java')
-rw-r--r--mobile/android/thirdparty/com/adjust/sdk/RequestHandler.java210
1 files changed, 0 insertions, 210 deletions
diff --git a/mobile/android/thirdparty/com/adjust/sdk/RequestHandler.java b/mobile/android/thirdparty/com/adjust/sdk/RequestHandler.java
deleted file mode 100644
index 84d45d0ce..000000000
--- a/mobile/android/thirdparty/com/adjust/sdk/RequestHandler.java
+++ /dev/null
@@ -1,210 +0,0 @@
-//
-// RequestHandler.java
-// Adjust
-//
-// Created by Christian Wellenbrock on 2013-06-25.
-// Copyright (c) 2013 adjust GmbH. All rights reserved.
-// See the file MIT-LICENSE for copying permission.
-//
-
-package com.adjust.sdk;
-
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.Looper;
-import android.os.Message;
-
-import ch.boye.httpclientandroidlib.HttpResponse;
-import ch.boye.httpclientandroidlib.NameValuePair;
-import ch.boye.httpclientandroidlib.client.ClientProtocolException;
-import ch.boye.httpclientandroidlib.client.HttpClient;
-import ch.boye.httpclientandroidlib.client.entity.UrlEncodedFormEntity;
-import ch.boye.httpclientandroidlib.client.methods.HttpPost;
-import ch.boye.httpclientandroidlib.client.methods.HttpUriRequest;
-import ch.boye.httpclientandroidlib.client.utils.URLEncodedUtils;
-import ch.boye.httpclientandroidlib.message.BasicNameValuePair;
-import org.json.JSONObject;
-
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.lang.ref.WeakReference;
-import java.net.SocketTimeoutException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-public class RequestHandler extends HandlerThread implements IRequestHandler {
- private InternalHandler internalHandler;
- private IPackageHandler packageHandler;
- private HttpClient httpClient;
- private ILogger logger;
-
- public RequestHandler(IPackageHandler packageHandler) {
- super(Constants.LOGTAG, MIN_PRIORITY);
- setDaemon(true);
- start();
-
- this.logger = AdjustFactory.getLogger();
- this.internalHandler = new InternalHandler(getLooper(), this);
- init(packageHandler);
-
- Message message = Message.obtain();
- message.arg1 = InternalHandler.INIT;
- internalHandler.sendMessage(message);
- }
-
- @Override
- public void init(IPackageHandler packageHandler) {
- this.packageHandler = packageHandler;
- }
-
- @Override
- public void sendPackage(ActivityPackage pack) {
- Message message = Message.obtain();
- message.arg1 = InternalHandler.SEND;
- message.obj = pack;
- internalHandler.sendMessage(message);
- }
-
- @Override
- public void sendClickPackage(ActivityPackage clickPackage) {
- Message message = Message.obtain();
- message.arg1 = InternalHandler.SEND_CLICK;
- message.obj = clickPackage;
- internalHandler.sendMessage(message);
-
- }
-
- private static final class InternalHandler extends Handler {
- private static final int INIT = 72401;
- private static final int SEND = 72400;
- private static final int SEND_CLICK = 72402;
-
- private final WeakReference<RequestHandler> requestHandlerReference;
-
- protected InternalHandler(Looper looper, RequestHandler requestHandler) {
- super(looper);
- this.requestHandlerReference = new WeakReference<RequestHandler>(requestHandler);
- }
-
- @Override
- public void handleMessage(Message message) {
- super.handleMessage(message);
-
- RequestHandler requestHandler = requestHandlerReference.get();
- if (null == requestHandler) {
- return;
- }
-
- switch (message.arg1) {
- case INIT:
- requestHandler.initInternal();
- break;
- case SEND:
- ActivityPackage activityPackage = (ActivityPackage) message.obj;
- requestHandler.sendInternal(activityPackage, true);
- break;
- case SEND_CLICK:
- ActivityPackage clickPackage = (ActivityPackage) message.obj;
- requestHandler.sendInternal(clickPackage, false);
- break;
- }
- }
- }
-
- private void initInternal() {
- httpClient = Util.getHttpClient();
- }
-
- private void sendInternal(ActivityPackage activityPackage, boolean sendToPackageHandler) {
- try {
- HttpUriRequest request = getRequest(activityPackage);
- HttpResponse response = httpClient.execute(request);
- requestFinished(response, sendToPackageHandler);
- } catch (UnsupportedEncodingException e) {
- sendNextPackage(activityPackage, "Failed to encode parameters", e, sendToPackageHandler);
- } catch (ClientProtocolException e) {
- closePackage(activityPackage, "Client protocol error", e, sendToPackageHandler);
- } catch (SocketTimeoutException e) {
- closePackage(activityPackage, "Request timed out", e, sendToPackageHandler);
- } catch (IOException e) {
- closePackage(activityPackage, "Request failed", e, sendToPackageHandler);
- } catch (Throwable e) {
- sendNextPackage(activityPackage, "Runtime exception", e, sendToPackageHandler);
- }
- }
-
- private void requestFinished(HttpResponse response, boolean sendToPackageHandler) {
- JSONObject jsonResponse = Util.parseJsonResponse(response, logger);
-
- if (jsonResponse == null) {
- if (sendToPackageHandler) {
- packageHandler.closeFirstPackage();
- }
- return;
- }
-
- packageHandler.finishedTrackingActivity(jsonResponse);
- if (sendToPackageHandler) {
- packageHandler.sendNextPackage();
- }
- }
-
- // close current package because it failed
- private void closePackage(ActivityPackage activityPackage, String message, Throwable throwable, boolean sendToPackageHandler) {
- final String packageMessage = activityPackage.getFailureMessage();
- final String handlerMessage = packageHandler.getFailureMessage();
- final String reasonString = getReasonString(message, throwable);
- logger.error("%s. (%s) %s", packageMessage, reasonString, handlerMessage);
-
- if (sendToPackageHandler) {
- packageHandler.closeFirstPackage();
- }
- }
-
- // send next package because the current package failed
- private void sendNextPackage(ActivityPackage activityPackage, String message, Throwable throwable, boolean sendToPackageHandler) {
- final String failureMessage = activityPackage.getFailureMessage();
- final String reasonString = getReasonString(message, throwable);
- logger.error("%s. (%s)", failureMessage, reasonString);
-
- if (sendToPackageHandler) {
- packageHandler.sendNextPackage();
- }
- }
-
- private String getReasonString(String message, Throwable throwable) {
- if (throwable != null) {
- return String.format("%s: %s", message, throwable);
- } else {
- return String.format("%s", message);
- }
- }
-
- private HttpUriRequest getRequest(ActivityPackage activityPackage) throws UnsupportedEncodingException {
- String url = Constants.BASE_URL + activityPackage.getPath();
- HttpPost request = new HttpPost(url);
-
- String language = Locale.getDefault().getLanguage();
- request.addHeader("Client-SDK", activityPackage.getClientSdk());
- request.addHeader("Accept-Language", language);
-
- List<NameValuePair> pairs = new ArrayList<NameValuePair>();
- for (Map.Entry<String, String> entry : activityPackage.getParameters().entrySet()) {
- NameValuePair pair = new BasicNameValuePair(entry.getKey(), entry.getValue());
- pairs.add(pair);
- }
-
- long now = System.currentTimeMillis();
- String dateString = Util.dateFormat(now);
- NameValuePair sentAtPair = new BasicNameValuePair("sent_at", dateString);
- pairs.add(sentAtPair);
-
- UrlEncodedFormEntity entity = new UrlEncodedFormEntity(pairs);
- entity.setContentType(URLEncodedUtils.CONTENT_TYPE);
- request.setEntity(entity);
-
- return request;
- }
-}