导航菜单

页面标题

页面副标题

Structured v2.5.8 - HTTPClient.java 源代码

正在查看: Structured v2.5.8 应用的 HTTPClient.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.revenuecat.purchases.common;

import P8.n;
import android.os.Build;
import com.revenuecat.purchases.Store;
import com.revenuecat.purchases.VerificationResult;
import com.revenuecat.purchases.common.diagnostics.DiagnosticsTracker;
import com.revenuecat.purchases.common.networking.ETagManager;
import com.revenuecat.purchases.common.networking.Endpoint;
import com.revenuecat.purchases.common.networking.HTTPRequest;
import com.revenuecat.purchases.common.networking.HTTPResult;
import com.revenuecat.purchases.common.networking.MapConverter;
import com.revenuecat.purchases.common.networking.RCHTTPStatusCodes;
import com.revenuecat.purchases.common.verification.SigningManager;
import com.revenuecat.purchases.strings.NetworkStrings;
import com.revenuecat.purchases.utils.MapExtensionsKt;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import k7.l;
import kotlin.Metadata;
import kotlin.jvm.internal.AbstractC2110f;
import kotlin.jvm.internal.m;
import l7.AbstractC2185B;
import org.json.JSONObject;
import v7.e;

@Metadata(d1 = {"\u0000¨\u0001\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000e\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0005\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010$\n\u0002\u0010 \n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u000b\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\f\n\u0002\u0018\u0002\n\u0002\b\u0005\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0015\b\u0000\u0018\u0000 \\2\u00020\u0001:\u0001\\B=\u0012\u0006\u0010\u0003\u001a\u00020\u0002\u0012\u0006\u0010\u0005\u001a\u00020\u0004\u0012\b\u0010\u0007\u001a\u0004\u0018\u00010\u0006\u0012\u0006\u0010\t\u001a\u00020\b\u0012\b\b\u0002\u0010\u000b\u001a\u00020\n\u0012\b\b\u0002\u0010\r\u001a\u00020\f¢\u0006\u0004\b\u000e\u0010\u000fJ\u0017\u0010\u0013\u001a\u00020\u00122\u0006\u0010\u0011\u001a\u00020\u0010H\u0002¢\u0006\u0004\b\u0013\u0010\u0014J\u0017\u0010\u0013\u001a\u00020\u00172\u0006\u0010\u0016\u001a\u00020\u0015H\u0002¢\u0006\u0004\b\u0013\u0010\u0018J\u0017\u0010\u001a\u001a\u00020\u00192\u0006\u0010\u0011\u001a\u00020\u0010H\u0002¢\u0006\u0004\b\u001a\u0010\u001bJ\u0019\u0010\u001e\u001a\u0004\u0018\u00010\u00102\u0006\u0010\u001d\u001a\u00020\u001cH\u0002¢\u0006\u0004\b\u001e\u0010\u001fJ\u001f\u0010#\u001a\u00020\"2\u0006\u0010 \u001a\u00020\u00172\u0006\u0010!\u001a\u00020\u0019H\u0002¢\u0006\u0004\b#\u0010$Jq\u00101\u001a\u0004\u0018\u0001002\u0006\u0010&\u001a\u00020%2\u0006\u0010(\u001a\u00020'2\u0016\u0010!\u001a\u0012\u0012\u0004\u0012\u00020\u0019\u0012\u0006\u0012\u0004\u0018\u00010\u0001\u0018\u00010)2\u001a\u0010,\u001a\u0016\u0012\u0010\u0012\u000e\u0012\u0004\u0012\u00020\u0019\u0012\u0004\u0012\u00020\u00190+\u0018\u00010*2\u0012\u0010-\u001a\u000e\u0012\u0004\u0012\u00020\u0019\u0012\u0004\u0012\u00020\u00190)2\u0006\u0010/\u001a\u00020.H\u0002¢\u0006\u0004\b1\u00102J1\u00107\u001a\u00020\"2\u0006\u0010(\u001a\u00020'2\u0006\u00104\u001a\u0002032\u0006\u00105\u001a\u00020.2\b\u00106\u001a\u0004\u0018\u000100H\u0002¢\u0006\u0004\b7\u00108J[\u0010>\u001a\u000e\u0012\u0004\u0012\u00020\u0019\u0012\u0004\u0012\u00020\u00190)2\u0012\u00109\u001a\u000e\u0012\u0004\u0012\u00020\u0019\u0012\u0004\u0012\u00020\u00190)2\u0006\u0010:\u001a\u00020\u00192\u0006\u0010/\u001a\u00020.2\b\u0010;\u001a\u0004\u0018\u00010\u00192\u0006\u0010<\u001a\u00020.2\b\u0010=\u001a\u0004\u0018\u00010\u0019H\u0002¢\u0006\u0004\b>\u0010?J\u0017\u0010B\u001a\u00020\u001c2\u0006\u0010A\u001a\u00020@H\u0002¢\u0006\u0004\bB\u0010CJ\u000f\u0010D\u001a\u00020\u0019H\u0002¢\u0006\u0004\bD\u0010EJ=\u0010I\u001a\u00020H2\u0006\u0010:\u001a\u00020\u00192\u0006\u0010\u001d\u001a\u00020F2\b\u0010G\u001a\u0004\u0018\u00010\u00192\b\u0010;\u001a\u0004\u0018\u00010\u00192\b\u0010=\u001a\u0004\u0018\u00010\u0019H\u0002¢\u0006\u0004\bI\u0010JJ\u001f\u0010L\u001a\n K*\u0004\u0018\u00010\u00190\u00192\u0006\u0010\u001d\u001a\u00020FH\u0002¢\u0006\u0004\bL\u0010MJ\u0019\u0010N\u001a\u0004\u0018\u00010\u00192\u0006\u0010\u001d\u001a\u00020FH\u0002¢\u0006\u0004\bN\u0010MJ\u0019\u0010O\u001a\u0004\u0018\u0001032\u0006\u0010\u001d\u001a\u00020FH\u0002¢\u0006\u0004\bO\u0010PJo\u0010Q\u001a\u0002002\u0006\u0010&\u001a\u00020%2\u0006\u0010(\u001a\u00020'2\u0016\u0010!\u001a\u0012\u0012\u0004\u0012\u00020\u0019\u0012\u0006\u0012\u0004\u0018\u00010\u0001\u0018\u00010)2\u001a\u0010,\u001a\u0016\u0012\u0010\u0012\u000e\u0012\u0004\u0012\u00020\u0019\u0012\u0004\u0012\u00020\u00190+\u0018\u00010*2\u0012\u0010-\u001a\u000e\u0012\u0004\u0012\u00020\u0019\u0012\u0004\u0012\u00020\u00190)2\b\b\u0002\u0010/\u001a\u00020.¢\u0006\u0004\bQ\u00102J\r\u0010R\u001a\u00020\"¢\u0006\u0004\bR\u0010SR\u0014\u0010\u0003\u001a\u00020\u00028\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b\u0003\u0010TR\u0014\u0010\u0005\u001a\u00020\u00048\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b\u0005\u0010UR\u0016\u0010\u0007\u001a\u0004\u0018\u00010\u00068\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b\u0007\u0010VR\u0017\u0010\t\u001a\u00020\b8\u0006¢\u0006\f\n\u0004\b\t\u0010W\u001a\u0004\bX\u0010YR\u0014\u0010\u000b\u001a\u00020\n8\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b\u000b\u0010ZR\u0014\u0010\r\u001a\u00020\f8\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b\r\u0010[¨\u0006]"}, d2 = {"Lcom/revenuecat/purchases/common/HTTPClient;", "", "Lcom/revenuecat/purchases/common/AppConfig;", "appConfig", "Lcom/revenuecat/purchases/common/networking/ETagManager;", "eTagManager", "Lcom/revenuecat/purchases/common/diagnostics/DiagnosticsTracker;", "diagnosticsTrackerIfEnabled", "Lcom/revenuecat/purchases/common/verification/SigningManager;", "signingManager", "Lcom/revenuecat/purchases/common/DateProvider;", "dateProvider", "Lcom/revenuecat/purchases/common/networking/MapConverter;", "mapConverter", "<init>", "(Lcom/revenuecat/purchases/common/AppConfig;Lcom/revenuecat/purchases/common/networking/ETagManager;Lcom/revenuecat/purchases/common/diagnostics/DiagnosticsTracker;Lcom/revenuecat/purchases/common/verification/SigningManager;Lcom/revenuecat/purchases/common/DateProvider;Lcom/revenuecat/purchases/common/networking/MapConverter;)V", "Ljava/io/InputStream;", "inputStream", "Ljava/io/BufferedReader;", "buffer", "(Ljava/io/InputStream;)Ljava/io/BufferedReader;", "Ljava/io/OutputStream;", "outputStream", "Ljava/io/BufferedWriter;", "(Ljava/io/OutputStream;)Ljava/io/BufferedWriter;", "", "readFully", "(Ljava/io/InputStream;)Ljava/lang/String;", "Ljava/net/HttpURLConnection;", "connection", "getInputStream", "(Ljava/net/HttpURLConnection;)Ljava/io/InputStream;", "writer", "body", "Lk7/C;", "writeFully", "(Ljava/io/BufferedWriter;Ljava/lang/String;)V", "Ljava/net/URL;", "baseURL", "Lcom/revenuecat/purchases/common/networking/Endpoint;", "endpoint", "", "", "Lk7/l;", "postFieldsToSign", "requestHeaders", "", "refreshETag", "Lcom/revenuecat/purchases/common/networking/HTTPResult;", "performCall", "(Ljava/net/URL;Lcom/revenuecat/purchases/common/networking/Endpoint;Ljava/util/Map;Ljava/util/List;Ljava/util/Map;Z)Lcom/revenuecat/purchases/common/networking/HTTPResult;", "Ljava/util/Date;", "requestStartTime", "callSuccessful", "callResult", "trackHttpRequestPerformedIfNeeded", "(Lcom/revenuecat/purchases/common/networking/Endpoint;Ljava/util/Date;ZLcom/revenuecat/purchases/common/networking/HTTPResult;)V", "authenticationHeaders", "urlPath", "nonce", "shouldSignResponse", "postFieldsToSignHeader", "getHeaders", "(Ljava/util/Map;Ljava/lang/String;ZLjava/lang/String;ZLjava/lang/String;)Ljava/util/Map;", "Lcom/revenuecat/purchases/common/networking/HTTPRequest;", "request", "getConnection", "(Lcom/revenuecat/purchases/common/networking/HTTPRequest;)Ljava/net/HttpURLConnection;", "getXPlatformHeader", "()Ljava/lang/String;", "Ljava/net/URLConnection;", "payload", "Lcom/revenuecat/purchases/VerificationResult;", "verifyResponse", "(Ljava/lang/String;Ljava/net/URLConnection;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/revenuecat/purchases/VerificationResult;", "kotlin.jvm.PlatformType", "getETagHeader", "(Ljava/net/URLConnection;)Ljava/lang/String;", "getRequestTimeHeader", "getRequestDateHeader", "(Ljava/net/URLConnection;)Ljava/util/Date;", "performRequest", "clearCaches", "()V", "Lcom/revenuecat/purchases/common/AppConfig;", "Lcom/revenuecat/purchases/common/networking/ETagManager;", "Lcom/revenuecat/purchases/common/diagnostics/DiagnosticsTracker;", "Lcom/revenuecat/purchases/common/verification/SigningManager;", "getSigningManager", "()Lcom/revenuecat/purchases/common/verification/SigningManager;", "Lcom/revenuecat/purchases/common/DateProvider;", "Lcom/revenuecat/purchases/common/networking/MapConverter;", "Companion", "purchases_defaultsRelease"}, k = 1, mv = {1, 7, 1}, xi = 48)
public final class HTTPClient {
    public static final int NO_STATUS_CODE = -1;
    private final AppConfig appConfig;
    private final DateProvider dateProvider;
    private final DiagnosticsTracker diagnosticsTrackerIfEnabled;
    private final ETagManager eTagManager;
    private final MapConverter mapConverter;
    private final SigningManager signingManager;

    @Metadata(k = 3, mv = {1, 7, 1}, xi = 48)
    public class WhenMappings {
        public static final int[] $EnumSwitchMapping$0;

        static {
            int[] iArr = new int[Store.values().length];
            try {
                iArr[Store.AMAZON.ordinal()] = 1;
            } catch (NoSuchFieldError unused) {
            }
            $EnumSwitchMapping$0 = iArr;
        }
    }

    public HTTPClient(AppConfig appConfig, ETagManager eTagManager, DiagnosticsTracker diagnosticsTracker, SigningManager signingManager, DateProvider dateProvider, MapConverter mapConverter) {
        m.f("appConfig", appConfig);
        m.f("eTagManager", eTagManager);
        m.f("signingManager", signingManager);
        m.f("dateProvider", dateProvider);
        m.f("mapConverter", mapConverter);
        this.appConfig = appConfig;
        this.eTagManager = eTagManager;
        this.diagnosticsTrackerIfEnabled = diagnosticsTracker;
        this.signingManager = signingManager;
        this.dateProvider = dateProvider;
        this.mapConverter = mapConverter;
    }

    public HTTPClient(AppConfig appConfig, ETagManager eTagManager, DiagnosticsTracker diagnosticsTracker, SigningManager signingManager, DateProvider dateProvider, MapConverter mapConverter, int i6, AbstractC2110f abstractC2110f) {
        this(appConfig, eTagManager, diagnosticsTracker, signingManager, (i6 & 16) != 0 ? new DefaultDateProvider() : dateProvider, (i6 & 32) != 0 ? new MapConverter() : mapConverter);
    }

    private final BufferedReader buffer(InputStream inputStream) {
        return new BufferedReader(new InputStreamReader(inputStream));
    }

    private final BufferedWriter buffer(OutputStream outputStream) {
        return new BufferedWriter(new OutputStreamWriter(outputStream));
    }

    private final HttpURLConnection getConnection(HTTPRequest request) {
        URLConnection openConnection = request.getFullURL().openConnection();
        m.d("null cannot be cast to non-null type java.net.HttpURLConnection", openConnection);
        HttpURLConnection httpURLConnection = (HttpURLConnection) openConnection;
        for (Map.Entry<String, String> entry : request.getHeaders().entrySet()) {
            httpURLConnection.addRequestProperty(entry.getKey(), entry.getValue());
        }
        JSONObject body = request.getBody();
        if (body != null) {
            httpURLConnection.setDoOutput(true);
            httpURLConnection.setRequestMethod("POST");
            OutputStream outputStream = httpURLConnection.getOutputStream();
            m.e("os", outputStream);
            BufferedWriter buffer = buffer(outputStream);
            String jSONObject = body.toString();
            m.e("body.toString()", jSONObject);
            writeFully(buffer, jSONObject);
        }
        return httpURLConnection;
    }

    private final String getETagHeader(URLConnection connection) {
        return connection.getHeaderField("X-RevenueCat-ETag");
    }

    private final Map<String, String> getHeaders(Map<String, String> authenticationHeaders, String urlPath, boolean refreshETag, String nonce, boolean shouldSignResponse, String postFieldsToSignHeader) {
        return MapExtensionsKt.filterNotNullValues(AbstractC2185B.p0(AbstractC2185B.p0(AbstractC2185B.n0(new l("Content-Type", "application/json"), new l("X-Platform", getXPlatformHeader()), new l("X-Platform-Flavor", this.appConfig.getPlatformInfo().getFlavor()), new l("X-Platform-Flavor-Version", this.appConfig.getPlatformInfo().getVersion()), new l("X-Platform-Version", String.valueOf(Build.VERSION.SDK_INT)), new l("X-Version", "7.2.2"), new l("X-Client-Locale", this.appConfig.getLanguageTag()), new l("X-Client-Version", this.appConfig.getVersionName()), new l("X-Client-Bundle-ID", this.appConfig.getPackageName()), new l("X-Observer-Mode-Enabled", this.appConfig.getFinishTransactions() ? "false" : "true"), new l("X-Nonce", nonce), new l(HTTPRequest.POST_PARAMS_HASH, postFieldsToSignHeader), new l("X-Custom-Entitlements-Computation", this.appConfig.getCustomEntitlementComputation() ? "true" : null)), authenticationHeaders), this.eTagManager.getETagHeaders$purchases_defaultsRelease(urlPath, shouldSignResponse, refreshETag)));
    }

    private final InputStream getInputStream(HttpURLConnection connection) {
        try {
            return connection.getInputStream();
        } catch (Exception e3) {
            if (!(e3 instanceof IllegalArgumentException ? true : e3 instanceof IOException)) {
                throw e3;
            }
            LogWrapperKt.log(LogIntent.WARNING, String.format(NetworkStrings.PROBLEM_CONNECTING, Arrays.copyOf(new Object[]{e3.getMessage()}, 1)));
            return connection.getErrorStream();
        }
    }

    private final Date getRequestDateHeader(URLConnection connection) {
        String requestTimeHeader = getRequestTimeHeader(connection);
        if (requestTimeHeader != null) {
            return new Date(Long.parseLong(requestTimeHeader));
        }
        return null;
    }

    private final String getRequestTimeHeader(URLConnection connection) {
        String headerField = connection.getHeaderField(HTTPResult.REQUEST_TIME_HEADER_NAME);
        if (headerField == null || n.J0(headerField)) {
            return null;
        }
        return headerField;
    }

    private final String getXPlatformHeader() {
        return WhenMappings.$EnumSwitchMapping$0[this.appConfig.getStore().ordinal()] == 1 ? "amazon" : "android";
    }

    private final com.revenuecat.purchases.common.networking.HTTPResult performCall(java.net.URL r21, com.revenuecat.purchases.common.networking.Endpoint r22, java.util.Map<java.lang.String, ? extends java.lang.Object> r23, java.util.List<k7.l> r24, java.util.Map<java.lang.String, java.lang.String> r25, boolean r26) {
        throw new UnsupportedOperationException("Method not decompiled: com.revenuecat.purchases.common.HTTPClient.performCall(java.net.URL, com.revenuecat.purchases.common.networking.Endpoint, java.util.Map, java.util.List, java.util.Map, boolean):com.revenuecat.purchases.common.networking.HTTPResult");
    }

    public static HTTPResult performRequest$default(HTTPClient hTTPClient, URL url, Endpoint endpoint, Map map, List list, Map map2, boolean z10, int i6, Object obj) {
        if ((i6 & 32) != 0) {
            z10 = false;
        }
        return hTTPClient.performRequest(url, endpoint, map, list, map2, z10);
    }

    private final String readFully(InputStream inputStream) {
        return e.f(buffer(inputStream));
    }

    private final void trackHttpRequestPerformedIfNeeded(Endpoint endpoint, Date requestStartTime, boolean callSuccessful, HTTPResult callResult) {
        DiagnosticsTracker diagnosticsTracker = this.diagnosticsTrackerIfEnabled;
        if (diagnosticsTracker != null) {
            long between = DurationExtensionsKt.between(Q8.b.f11000n, requestStartTime, this.dateProvider.getNow());
            int responseCode = callSuccessful ? callResult != null ? callResult.getResponseCode() : 304 : -1;
            HTTPResult.Origin origin = callResult != null ? callResult.getOrigin() : null;
            if (callResult != null && (r13 = callResult.getVerificationResult()) != null) {
                diagnosticsTracker.m45trackHttpRequestPerformedNcHsxvU(endpoint, between, !callSuccessful && RCHTTPStatusCodes.INSTANCE.isSuccessful(responseCode), responseCode, origin, r13);
            }
            VerificationResult verificationResult = VerificationResult.NOT_REQUESTED;
            diagnosticsTracker.m45trackHttpRequestPerformedNcHsxvU(endpoint, between, !callSuccessful && RCHTTPStatusCodes.INSTANCE.isSuccessful(responseCode), responseCode, origin, verificationResult);
        }
    }

    private final VerificationResult verifyResponse(String urlPath, URLConnection connection, String payload, String nonce, String postFieldsToSignHeader) {
        return this.signingManager.verifyResponse(urlPath, connection.getHeaderField(HTTPResult.SIGNATURE_HEADER_NAME), nonce, payload, getRequestTimeHeader(connection), getETagHeader(connection), postFieldsToSignHeader);
    }

    private final void writeFully(BufferedWriter writer, String body) {
        writer.write(body);
        writer.flush();
    }

    public final void clearCaches() {
        this.eTagManager.clearCaches$purchases_defaultsRelease();
    }

    public final SigningManager getSigningManager() {
        return this.signingManager;
    }

    public final HTTPResult performRequest(URL baseURL, Endpoint endpoint, Map<String, ? extends Object> body, List<l> postFieldsToSign, Map<String, String> requestHeaders, boolean refreshETag) {
        m.f("baseURL", baseURL);
        m.f("endpoint", endpoint);
        m.f("requestHeaders", requestHeaders);
        if (this.appConfig.getForceServerErrors()) {
            LogUtilsKt.warnLog("Forcing server error for request to " + endpoint.getPath());
            return new HTTPResult(500, "", HTTPResult.Origin.BACKEND, null, VerificationResult.NOT_REQUESTED);
        }
        Date now = this.dateProvider.getNow();
        try {
            HTTPResult performCall = performCall(baseURL, endpoint, body, postFieldsToSign, requestHeaders, refreshETag);
            trackHttpRequestPerformedIfNeeded(endpoint, now, true, performCall);
            if (performCall == null) {
                LogWrapperKt.log(LogIntent.WARNING, NetworkStrings.ETAG_RETRYING_CALL);
                performCall = performRequest(baseURL, endpoint, body, postFieldsToSign, requestHeaders, true);
            }
            return performCall;
        } catch (Throwable th) {
            trackHttpRequestPerformedIfNeeded(endpoint, now, false, null);
            throw th;
        }
    }
}