package com.adjust.sdk; import android.net.Uri; import c.d.b.a.a; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import javax.net.ssl.HttpsURLConnection; import org.json.JSONException; import org.json.JSONObject; public class UtilNetworking { private static String userAgent; public static class ConnectionOptions implements IConnectionOptions { @Override // com.adjust.sdk.UtilNetworking.IConnectionOptions public void applyConnectionOptions(HttpsURLConnection httpsURLConnection, String str) { httpsURLConnection.setRequestProperty("Client-SDK", str); httpsURLConnection.setConnectTimeout(60000); httpsURLConnection.setReadTimeout(60000); if (UtilNetworking.access$000() != null) { httpsURLConnection.setRequestProperty("User-Agent", UtilNetworking.access$000()); } } } public interface IConnectionOptions { void applyConnectionOptions(HttpsURLConnection httpsURLConnection, String str); } public static /* synthetic */ String access$000() { return userAgent; } private static String buildAuthorizationHeader(Map map, String str) { String extractSecretId = extractSecretId(map); String buildAuthorizationHeaderV2 = buildAuthorizationHeaderV2(extractSignature(map), extractSecretId, extractHeadersId(map), extractAlgorithm(map), extractNativeVersion(map)); return buildAuthorizationHeaderV2 != null ? buildAuthorizationHeaderV2 : buildAuthorizationHeaderV1(map, extractAppSecret(map), extractSecretId, str); } private static String buildAuthorizationHeaderV1(Map map, String str, String str2, String str3) { if (str == null || str.length() == 0) { return null; } Map signature = getSignature(map, str3, str); String formatString = Util.formatString("Signature %s,%s,%s,%s", Util.formatString("secret_id=\"%s\"", str2), Util.formatString("signature=\"%s\"", Util.sha256(signature.get("clear_signature"))), Util.formatString("algorithm=\"%s\"", "sha256"), Util.formatString("headers=\"%s\"", signature.get("fields"))); getLogger().verbose("authorizationHeader: %s", formatString); return formatString; } /* JADX DEBUG: Can't convert new array creation: APUT found in different block: 0x0030: APUT (r1v3 java.lang.Object[]), (0 ??[int, short, byte, char]), (r6v1 java.lang.String) */ /* JADX DEBUG: Can't convert new array creation: APUT found in different block: 0x003f: APUT (r1v4 java.lang.Object[]), (0 ??[int, short, byte, char]), (r7v1 java.lang.String) */ private static String buildAuthorizationHeaderV2(String str, String str2, String str3, String str4, String str5) { if (str2 == null || str == null || str3 == null) { return null; } String formatString = Util.formatString("signature=\"%s\"", str); String formatString2 = Util.formatString("secret_id=\"%s\"", str2); String formatString3 = Util.formatString("headers_id=\"%s\"", str3); Object[] objArr = new Object[1]; if (str4 == null) { str4 = "adj1"; } objArr[0] = str4; String formatString4 = Util.formatString("algorithm=\"%s\"", objArr); Object[] objArr2 = new Object[1]; if (str5 == null) { str5 = ""; } objArr2[0] = str5; String formatString5 = Util.formatString("Signature %s,%s,%s,%s,%s", formatString, formatString2, formatString4, formatString3, Util.formatString("native_version=\"%s\"", objArr2)); getLogger().verbose("authorizationHeader: %s", formatString5); return formatString5; } private static Uri buildUri(String str, Map map, String str2) { String str3; Uri.Builder builder = new Uri.Builder(); String str4 = "https"; String str5 = "app.adjust.com"; try { String baseUrl = AdjustFactory.getBaseUrl(); if (str2 != null) { baseUrl = baseUrl + str2; } URL url = new URL(baseUrl); str4 = url.getProtocol(); str5 = url.getAuthority(); str3 = url.getPath(); } catch (MalformedURLException e) { getLogger().error("Unable to parse endpoint (%s)", e.getMessage()); str3 = ""; } builder.scheme(str4); builder.encodedAuthority(str5); builder.path(str3); builder.appendPath(str); for (Map.Entry entry : map.entrySet()) { builder.appendQueryParameter(entry.getKey(), entry.getValue()); } builder.appendQueryParameter("sent_at", Util.dateFormatter.format(Long.valueOf(System.currentTimeMillis()))); return builder.build(); } public static ResponseData createGETHttpsURLConnection(ActivityPackage activityPackage, String str) throws Exception { try { HashMap hashMap = new HashMap(activityPackage.getParameters()); extractEventCallbackId(hashMap); HttpsURLConnection httpsURLConnection = AdjustFactory.getHttpsURLConnection(new URL(buildUri(activityPackage.getPath(), hashMap, str).toString())); AdjustFactory.getConnectionOptions().applyConnectionOptions(httpsURLConnection, activityPackage.getClientSdk()); String buildAuthorizationHeader = buildAuthorizationHeader(hashMap, activityPackage.getActivityKind().toString()); if (buildAuthorizationHeader != null) { httpsURLConnection.setRequestProperty("Authorization", buildAuthorizationHeader); } httpsURLConnection.setRequestMethod("GET"); return readHttpResponse(httpsURLConnection, activityPackage); } catch (Exception e) { throw e; } } public static ResponseData createPOSTHttpsURLConnection(String str, ActivityPackage activityPackage, int i) throws Exception { Throwable th; Exception e; DataOutputStream dataOutputStream = null; try { HttpsURLConnection httpsURLConnection = AdjustFactory.getHttpsURLConnection(new URL(str)); HashMap hashMap = new HashMap(activityPackage.getParameters()); AdjustFactory.getConnectionOptions().applyConnectionOptions(httpsURLConnection, activityPackage.getClientSdk()); extractEventCallbackId(hashMap); String buildAuthorizationHeader = buildAuthorizationHeader(hashMap, activityPackage.getActivityKind().toString()); if (buildAuthorizationHeader != null) { httpsURLConnection.setRequestProperty("Authorization", buildAuthorizationHeader); } httpsURLConnection.setRequestMethod("POST"); httpsURLConnection.setUseCaches(false); httpsURLConnection.setDoInput(true); httpsURLConnection.setDoOutput(true); DataOutputStream dataOutputStream2 = new DataOutputStream(httpsURLConnection.getOutputStream()); try { dataOutputStream2.writeBytes(getPostDataString(hashMap, i)); ResponseData readHttpResponse = readHttpResponse(httpsURLConnection, activityPackage); try { dataOutputStream2.flush(); dataOutputStream2.close(); } catch (Exception unused) { } return readHttpResponse; } catch (Exception e2) { e = e2; dataOutputStream = dataOutputStream2; try { throw e; } catch (Throwable th2) { th = th2; } } catch (Throwable th3) { th = th3; dataOutputStream = dataOutputStream2; if (dataOutputStream != null) { try { dataOutputStream.flush(); dataOutputStream.close(); } catch (Exception unused2) { } } throw th; } } catch (Exception e3) { e = e3; throw e; } } private static String extractAlgorithm(Map map) { return map.remove("algorithm"); } private static String extractAppSecret(Map map) { return map.remove("app_secret"); } private static void extractEventCallbackId(Map map) { map.remove("event_callback_id"); } private static String extractHeadersId(Map map) { return map.remove("headers_id"); } private static String extractNativeVersion(Map map) { return map.remove("native_version"); } private static String extractSecretId(Map map) { return map.remove("secret_id"); } private static String extractSignature(Map map) { return map.remove("signature"); } private static ILogger getLogger() { return AdjustFactory.getLogger(); } private static String getPostDataString(Map map, int i) throws UnsupportedEncodingException { String str; StringBuilder sb = new StringBuilder(); Iterator> it = map.entrySet().iterator(); while (true) { str = ""; if (!it.hasNext()) { break; } Map.Entry next = it.next(); String encode = URLEncoder.encode(next.getKey(), "UTF-8"); String value = next.getValue(); if (value != null) { str = URLEncoder.encode(value, "UTF-8"); } if (sb.length() > 0) { sb.append("&"); } sb.append(encode); sb.append("="); sb.append(str); } String format = Util.dateFormatter.format(Long.valueOf(System.currentTimeMillis())); sb.append("&"); sb.append(URLEncoder.encode("sent_at", "UTF-8")); sb.append("="); sb.append(URLEncoder.encode(format, "UTF-8")); if (i > 0) { sb.append("&"); sb.append(URLEncoder.encode("queue_size", "UTF-8")); sb.append("="); sb.append(URLEncoder.encode(str + i, "UTF-8")); } return sb.toString(); } private static Map getSignature(Map map, String str, String str2) { String validIdentifier = getValidIdentifier(map); String str3 = map.get("source"); String str4 = map.get("payload"); HashMap hashMap = new HashMap(); hashMap.put("app_secret", str2); hashMap.put("created_at", map.get("created_at")); hashMap.put("activity_kind", str); hashMap.put(validIdentifier, map.get(validIdentifier)); if (str3 != null) { hashMap.put("source", str3); } if (str4 != null) { hashMap.put("payload", str4); } String str5 = ""; String str6 = str5; for (Map.Entry entry : hashMap.entrySet()) { if (entry.getValue() != null) { str5 = a.C(a.K(str5), (String) entry.getKey(), " "); StringBuilder K = a.K(str6); K.append((String) entry.getValue()); str6 = K.toString(); } } String substring = str5.substring(0, str5.length() - 1); HashMap hashMap2 = new HashMap(); hashMap2.put("clear_signature", str6); hashMap2.put("fields", substring); return hashMap2; } private static String getValidIdentifier(Map map) { if (map.get("gps_adid") != null) { return "gps_adid"; } if (map.get("fire_adid") != null) { return "fire_adid"; } if (map.get("android_id") != null) { return "android_id"; } if (map.get("mac_sha1") != null) { return "mac_sha1"; } if (map.get("mac_md5") != null) { return "mac_md5"; } if (map.get("android_uuid") != null) { return "android_uuid"; } return null; } private static ResponseData readHttpResponse(HttpsURLConnection httpsURLConnection, ActivityPackage activityPackage) throws Exception { JSONObject jSONObject; StringBuffer stringBuffer = new StringBuffer(); ILogger logger = getLogger(); ResponseData buildResponseData = ResponseData.buildResponseData(activityPackage); try { httpsURLConnection.connect(); Integer valueOf = Integer.valueOf(httpsURLConnection.getResponseCode()); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(valueOf.intValue() >= 400 ? httpsURLConnection.getErrorStream() : httpsURLConnection.getInputStream())); while (true) { String readLine = bufferedReader.readLine(); if (readLine == null) { break; } stringBuffer.append(readLine); } httpsURLConnection.disconnect(); String stringBuffer2 = stringBuffer.toString(); logger.verbose("Response: %s", stringBuffer2); if (valueOf.intValue() == 429) { logger.error("Too frequent requests to the endpoint (429)", new Object[0]); return buildResponseData; } if (!(stringBuffer2 == null || stringBuffer2.length() == 0)) { try { jSONObject = new JSONObject(stringBuffer2); } catch (JSONException e) { String formatString = Util.formatString("Failed to parse json response. (%s)", e.getMessage()); logger.error(formatString, new Object[0]); buildResponseData.message = formatString; jSONObject = null; } if (jSONObject == null) { return buildResponseData; } buildResponseData.jsonResponse = jSONObject; String optString = jSONObject.optString("message", null); buildResponseData.message = optString; buildResponseData.timestamp = jSONObject.optString("timestamp", null); buildResponseData.adid = jSONObject.optString("adid", null); String optString2 = jSONObject.optString("tracking_state", null); if (optString2 != null && optString2.equals("opted_out")) { buildResponseData.trackingState = TrackingState.OPTED_OUT; } if (optString == null) { optString = "No message found"; } if (valueOf.intValue() == 200) { logger.info("%s", optString); buildResponseData.success = true; } else { logger.error("%s", optString); } } return buildResponseData; } catch (Exception e2) { logger.error("Failed to read response. (%s)", e2.getMessage()); throw e2; } catch (Throwable th) { if (httpsURLConnection != null) { httpsURLConnection.disconnect(); } throw th; } } public static void setUserAgent(String str) { userAgent = str; } }