Kufar v3.2.0版本的 MD5 值为:6a4d203db1c561c7e3bcd50d23fed59f

以下内容为反编译后的 VungleApiClient.java 源代码,内容仅作参考


package com.vungle.warren;

import android.annotation.SuppressLint;
import android.app.UiModeManager;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.media.AudioManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Build;
import android.os.Environment;
import android.os.PowerManager;
import android.provider.Settings;
import android.security.NetworkSecurityPolicy;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.WindowManager;
import android.webkit.URLUtil;
import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.autofill.HintConstants;
import androidx.constraintlayout.core.motion.utils.TypedValues;
import androidx.core.content.PermissionChecker;
import androidx.core.util.Consumer;
import com.applovin.sdk.AppLovinEventTypes;
import com.google.android.gms.common.GoogleApiAvailabilityLight;
import com.google.gson.g;
import com.google.gson.j;
import com.google.gson.m;
import com.mbridge.msdk.foundation.entity.CampaignUnit;
import com.tapjoy.TJAdUnitConstants;
import com.tapjoy.TapjoyConstants;
import com.vungle.warren.PrivacyManager;
import com.vungle.warren.error.VungleException;
import com.vungle.warren.model.AdvertisementDBAdapter;
import com.vungle.warren.model.AdvertisingInfo;
import com.vungle.warren.model.CacheBust;
import com.vungle.warren.model.CacheBustDBAdapter;
import com.vungle.warren.model.Cookie;
import com.vungle.warren.model.JsonUtil;
import com.vungle.warren.model.SessionData;
import com.vungle.warren.model.VisionDataDBAdapter;
import com.vungle.warren.network.APIFactory;
import com.vungle.warren.network.Call;
import com.vungle.warren.network.VungleApi;
import com.vungle.warren.omsdk.OMInjector;
import com.vungle.warren.persistence.CacheManager;
import com.vungle.warren.persistence.DatabaseHelper;
import com.vungle.warren.persistence.Repository;
import com.vungle.warren.session.SessionAttribute;
import com.vungle.warren.session.SessionEvent;
import com.vungle.warren.utility.TimeoutProvider;
import com.vungle.warren.utility.platform.Platform;
import java.io.File;
import java.io.IOException;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.TimeZone;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import okhttp3.HttpUrl;
import okhttp3.Interceptor;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Protocol;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import okhttp3.ResponseBody;
import t90.c;
import t90.d;
import t90.m0;
import t90.o;

public class VungleApiClient {
    private static final String AMAZON_ADVERTISING_ID = "amazon_advertising_id";
    public static final String ANDROID_ID = "android_id";
    private static String BASE_URL = null;
    public static final String GAID = "gaid";
    private static final String ID = "id";
    public static final String IFA = "ifa";
    private static final String TAG = "com.vungle.warren.VungleApiClient";
    protected static WrapperFramework WRAPPER_FRAMEWORK_SELECTED;
    private static String headerUa;
    private static Set<Interceptor> logInterceptors;
    private static Set<Interceptor> networkInterceptors;
    private VungleApi api;
    private m appBody;
    private m baseDeviceInfo;
    private String biLoggingEndpoint;
    private String cacheBustEndpoint;
    private CacheManager cacheManager;
    private OkHttpClient client;
    private Context context;
    private boolean enableOm;
    private VungleApi gzipApi;
    private Boolean isGooglePlayServicesAvailable;
    private String logEndpoint;
    private String newEndpoint;
    private final OMInjector omInjector;
    private final Platform platform;
    private String reportAdEndpoint;
    private Repository repository;
    private String requestAdEndpoint;
    private String riEndpoint;
    private VungleApi timeoutApi;
    private TimeoutProvider timeoutProvider;
    private boolean willPlayAdEnabled;
    private String willPlayAdEndpoint;
    private int willPlayAdTimeout;
    private Map<String, Long> retryAfterDataMap = new ConcurrentHashMap();
    private String uaString = System.getProperty("http.agent");

    public static class ClearTextTrafficException extends IOException {
        public ClearTextTrafficException(String str) {
            super(str);
        }
    }

    @Retention(RetentionPolicy.SOURCE)
    public @interface ConnectionTypeDetail {
        public static final String CDMA_1XRTT = "cdma_1xrtt";
        public static final String CDMA_EVDO_0 = "cdma_evdo_0";
        public static final String CDMA_EVDO_A = "cdma_evdo_a";
        public static final String CDMA_EVDO_B = "cdma_evdo_b";
        public static final String EDGE = "edge";
        public static final String GPRS = "gprs";
        public static final String HRPD = "hrpd";
        public static final String HSDPA = "hsdpa";
        public static final String HSUPA = "hsupa";
        public static final String LTE = "LTE";
        public static final String UNKNOWN = "unknown";
        public static final String WCDMA = "wcdma";
    }

    public static class GzipRequestInterceptor implements Interceptor {
        private static final String CONTENT_ENCODING = "Content-Encoding";
        private static final String GZIP = "gzip";

        private RequestBody gzip(final RequestBody requestBody) throws IOException {
            final c cVar = new c();
            d c11 = m0.c(new o(cVar));
            requestBody.writeTo(c11);
            c11.close();
            return new RequestBody() {
                @Override
                public long contentLength() {
                    return cVar.getSize();
                }

                @Override
                public MediaType getContentType() {
                    return requestBody.getContentType();
                }

                @Override
                public void writeTo(@NonNull d dVar) throws IOException {
                    dVar.G(cVar.R());
                }
            };
        }

        @Override
        @NonNull
        public Response intercept(@NonNull Interceptor.Chain chain) throws IOException {
            Request request = chain.request();
            if (request.body() != null && request.header(CONTENT_ENCODING) == null) {
                return chain.proceed(request.newBuilder().header(CONTENT_ENCODING, GZIP).method(request.method(), gzip(request.body())).build());
            }
            return chain.proceed(request);
        }
    }

    @Keep
    public enum WrapperFramework {
        admob,
        air,
        cocos2dx,
        corona,
        dfp,
        heyzap,
        marmalade,
        mopub,
        unity,
        fyber,
        ironsource,
        upsight,
        appodeal,
        aerserv,
        adtoapp,
        tapdaq,
        vunglehbs,
        max,
        none
    }

    static {
        String str;
        StringBuilder sb2 = new StringBuilder();
        if (Platform.MANUFACTURER_AMAZON.equals(Build.MANUFACTURER)) {
            str = "VungleAmazon/";
        } else {
            str = "VungleDroid/";
        }
        sb2.append(str);
        sb2.append(BuildConfig.VERSION_NAME);
        headerUa = sb2.toString();
        BASE_URL = "https://config.ads.vungle.com/api/v5/";
        networkInterceptors = new HashSet();
        logInterceptors = new HashSet();
    }

    public VungleApiClient(@NonNull Context context, @NonNull CacheManager cacheManager, @NonNull Repository repository, @NonNull OMInjector oMInjector, @NonNull Platform platform) {
        this.cacheManager = cacheManager;
        this.context = context.getApplicationContext();
        this.repository = repository;
        this.omInjector = oMInjector;
        this.platform = platform;
        OkHttpClient.Builder addInterceptor = new OkHttpClient.Builder().addInterceptor(new Interceptor() {
            @Override
            public Response intercept(Interceptor.Chain chain) throws IOException {
                int code;
                Request request = chain.request();
                String encodedPath = request.url().encodedPath();
                Long l11 = (Long) VungleApiClient.this.retryAfterDataMap.get(encodedPath);
                if (l11 != null) {
                    long seconds = TimeUnit.MILLISECONDS.toSeconds(l11.longValue() - System.currentTimeMillis());
                    if (seconds > 0) {
                        return new Response.Builder().request(request).addHeader("Retry-After", String.valueOf(seconds)).code(TJAdUnitConstants.DEFAULT_VOLUME_CHECK_INTERVAL).protocol(Protocol.HTTP_1_1).message("Server is busy").body(ResponseBody.create(MediaType.parse("application/json; charset=utf-8"), "{\"Error\":\"Retry-After\"}")).build();
                    }
                    VungleApiClient.this.retryAfterDataMap.remove(encodedPath);
                }
                Response proceed = chain.proceed(request);
                if (proceed != null && ((code = proceed.code()) == 429 || code == 500 || code == 502 || code == 503)) {
                    String str = proceed.headers().get("Retry-After");
                    if (!TextUtils.isEmpty(str)) {
                        try {
                            long parseLong = Long.parseLong(str);
                            if (parseLong > 0) {
                                VungleApiClient.this.retryAfterDataMap.put(encodedPath, Long.valueOf((parseLong * 1000) + System.currentTimeMillis()));
                            }
                        } catch (NumberFormatException unused) {
                            Log.d(VungleApiClient.TAG, "Retry-After value is not an valid value");
                        }
                    }
                }
                return proceed;
            }
        });
        this.client = addInterceptor.build();
        OkHttpClient build = addInterceptor.addInterceptor(new GzipRequestInterceptor()).build();
        APIFactory aPIFactory = new APIFactory(this.client, BASE_URL);
        Vungle vungle = Vungle._instance;
        this.api = aPIFactory.createAPI(vungle.appID);
        this.gzipApi = new APIFactory(build, BASE_URL).createAPI(vungle.appID);
        this.timeoutProvider = (TimeoutProvider) ServiceLocator.getInstance(context).getService(TimeoutProvider.class);
    }

    private String getConnectionTypeDetail(int i11) {
        switch (i11) {
            case 1:
                return ConnectionTypeDetail.GPRS;
            case 2:
                return ConnectionTypeDetail.EDGE;
            case 3:
            case 10:
            case 11:
            default:
                return "unknown";
            case 4:
                return ConnectionTypeDetail.WCDMA;
            case 5:
                return ConnectionTypeDetail.CDMA_EVDO_0;
            case 6:
                return ConnectionTypeDetail.CDMA_EVDO_A;
            case 7:
                return ConnectionTypeDetail.CDMA_1XRTT;
            case 8:
                return ConnectionTypeDetail.HSDPA;
            case 9:
                return ConnectionTypeDetail.HSUPA;
            case 12:
                return ConnectionTypeDetail.CDMA_EVDO_B;
            case 13:
                return ConnectionTypeDetail.LTE;
            case 14:
                return ConnectionTypeDetail.HRPD;
        }
    }

    @SuppressLint({"HardwareIds", "NewApi"})
    private m getDeviceBody() throws IllegalStateException {
        return getDeviceBody(false);
    }

    private m getExtBody() {
        String str;
        Cookie cookie = (Cookie) this.repository.load(Cookie.CONFIG_EXTENSION, Cookie.class).get(this.timeoutProvider.getTimeout(), TimeUnit.MILLISECONDS);
        if (cookie != null) {
            str = cookie.getString(Cookie.CONFIG_EXTENSION);
        } else {
            str = "";
        }
        if (TextUtils.isEmpty(str)) {
            return null;
        }
        m mVar = new m();
        mVar.z(Cookie.CONFIG_EXTENSION, str);
        return mVar;
    }

    public static String getHeaderUa() {
        return headerUa;
    }

    private String getUserAgentFromCookie() {
        Cookie cookie = (Cookie) this.repository.load("userAgent", Cookie.class).get();
        if (cookie == null) {
            return System.getProperty("http.agent");
        }
        String string = cookie.getString("userAgent");
        if (TextUtils.isEmpty(string)) {
            return System.getProperty("http.agent");
        }
        return string;
    }

    private m getUserBody() {
        String str;
        String str2;
        long j11;
        String str3;
        String str4;
        m mVar = new m();
        Cookie cookie = (Cookie) this.repository.load(Cookie.CONSENT_COOKIE, Cookie.class).get(this.timeoutProvider.getTimeout(), TimeUnit.MILLISECONDS);
        String str5 = "";
        if (cookie != null) {
            str = cookie.getString("consent_status");
            str2 = cookie.getString("consent_source");
            j11 = cookie.getLong("timestamp").longValue();
            str3 = cookie.getString("consent_message_version");
        } else {
            str = "unknown";
            str2 = "no_interaction";
            j11 = 0;
            str3 = "";
        }
        m mVar2 = new m();
        mVar2.z("consent_status", str);
        mVar2.z("consent_source", str2);
        mVar2.y("consent_timestamp", Long.valueOf(j11));
        if (!TextUtils.isEmpty(str3)) {
            str5 = str3;
        }
        mVar2.z("consent_message_version", str5);
        mVar.u("gdpr", mVar2);
        Cookie cookie2 = (Cookie) this.repository.load(Cookie.CCPA_COOKIE, Cookie.class).get();
        if (cookie2 != null) {
            str4 = cookie2.getString(Cookie.CCPA_CONSENT_STATUS);
        } else {
            str4 = "opted_in";
        }
        m mVar3 = new m();
        mVar3.z("status", str4);
        mVar.u("ccpa", mVar3);
        if (PrivacyManager.getInstance().getCoppaStatus() != PrivacyManager.COPPA.COPPA_NOTSET) {
            m mVar4 = new m();
            mVar4.w(Cookie.COPPA_STATUS_KEY, Boolean.valueOf(PrivacyManager.getInstance().getCoppaStatus().getValue()));
            mVar.u(Cookie.COPPA_KEY, mVar4);
        }
        return mVar;
    }

    private void initUserAgentLazy() {
        this.platform.getUserAgentLazy(new Consumer<String>() {
            @Override
            public void accept(String str) {
                if (str == null) {
                    Log.e(VungleApiClient.TAG, "Cannot Get UserAgent. Setting Default Device UserAgent");
                } else {
                    VungleApiClient.this.uaString = str;
                }
            }
        });
    }

    public static void setHeaderUa(String str) {
        headerUa = str;
    }

    @VisibleForTesting
    public void addPlaySvcAvailabilityInCookie(boolean z11) throws DatabaseHelper.DBException {
        Cookie cookie = new Cookie(Cookie.IS_PLAY_SERVICE_AVAILABLE);
        cookie.putValue(Cookie.IS_PLAY_SERVICE_AVAILABLE, Boolean.valueOf(z11));
        this.repository.save(cookie);
    }

    public Call<m> cacheBust(long j11) {
        if (this.cacheBustEndpoint != null) {
            m mVar = new m();
            mVar.u(TapjoyConstants.TJC_NOTIFICATION_DEVICE_PREFIX, getDeviceBody());
            mVar.u("app", this.appBody);
            mVar.u("user", getUserBody());
            m mVar2 = new m();
            mVar2.y(Cookie.LAST_CACHE_BUST, Long.valueOf(j11));
            mVar.u("request", mVar2);
            return this.gzipApi.cacheBust(getHeaderUa(), this.cacheBustEndpoint, mVar);
        }
        throw new IllegalStateException("API Client not configured yet! Must call /config first.");
    }

    public boolean canCallWillPlayAd() {
        if (this.willPlayAdEnabled && !TextUtils.isEmpty(this.willPlayAdEndpoint)) {
            return true;
        }
        return false;
    }

    public com.vungle.warren.network.Response config() throws VungleException, IOException {
        String str;
        m mVar = new m();
        mVar.u(TapjoyConstants.TJC_NOTIFICATION_DEVICE_PREFIX, getDeviceBody(true));
        mVar.u("app", this.appBody);
        mVar.u("user", getUserBody());
        m extBody = getExtBody();
        if (extBody != null) {
            mVar.u("ext", extBody);
        }
        com.vungle.warren.network.Response<m> execute = this.api.config(getHeaderUa(), mVar).execute();
        if (!execute.isSuccessful()) {
            return execute;
        }
        m body = execute.body();
        String str2 = TAG;
        Log.d(str2, "Config Response: " + body);
        if (JsonUtil.hasNonNull(body, "sleep")) {
            if (JsonUtil.hasNonNull(body, TJAdUnitConstants.String.VIDEO_INFO)) {
                str = body.C(TJAdUnitConstants.String.VIDEO_INFO).m();
            } else {
                str = "";
            }
            Log.e(str2, "Error Initializing Vungle. Please try again. " + str);
            throw new VungleException(3);
        }
        if (JsonUtil.hasNonNull(body, "endpoints")) {
            m E = body.E("endpoints");
            HttpUrl parse = HttpUrl.parse(E.C("new").m());
            HttpUrl parse2 = HttpUrl.parse(E.C(CampaignUnit.JSON_KEY_ADS).m());
            HttpUrl parse3 = HttpUrl.parse(E.C("will_play_ad").m());
            HttpUrl parse4 = HttpUrl.parse(E.C("report_ad").m());
            HttpUrl parse5 = HttpUrl.parse(E.C("ri").m());
            HttpUrl parse6 = HttpUrl.parse(E.C("log").m());
            HttpUrl parse7 = HttpUrl.parse(E.C(CacheBustDBAdapter.CacheBustColumns.TABLE_NAME).m());
            HttpUrl parse8 = HttpUrl.parse(E.C("sdk_bi").m());
            if (parse != null && parse2 != null && parse3 != null && parse4 != null && parse5 != null && parse6 != null && parse7 != null && parse8 != null) {
                this.newEndpoint = parse.getUrl();
                this.requestAdEndpoint = parse2.getUrl();
                this.willPlayAdEndpoint = parse3.getUrl();
                this.reportAdEndpoint = parse4.getUrl();
                this.riEndpoint = parse5.getUrl();
                this.logEndpoint = parse6.getUrl();
                this.cacheBustEndpoint = parse7.getUrl();
                this.biLoggingEndpoint = parse8.getUrl();
                m E2 = body.E("will_play_ad");
                this.willPlayAdTimeout = E2.C("request_timeout").h();
                this.willPlayAdEnabled = E2.C("enabled").e();
                this.enableOm = JsonUtil.getAsBoolean(body.E("viewability"), "om", false);
                if (this.willPlayAdEnabled) {
                    Log.v(str2, "willPlayAd is enabled, generating a timeout client.");
                    this.timeoutApi = new APIFactory(this.client.newBuilder().readTimeout(this.willPlayAdTimeout, TimeUnit.MILLISECONDS).build(), "https://api.vungle.com/").createAPI(Vungle._instance.appID);
                }
                if (getOmEnabled()) {
                    this.omInjector.init();
                } else {
                    SessionTracker.getInstance().trackEvent(new SessionData.Builder().setEvent(SessionEvent.OM_SDK).addData(SessionAttribute.ENABLED, false).build());
                }
                return execute;
            }
            Log.e(str2, "Error Initializing Vungle. Please try again. ");
            throw new VungleException(3);
        }
        Log.e(str2, "Error Initializing Vungle. Please try again. ");
        throw new VungleException(3);
    }

    public boolean getOmEnabled() {
        return this.enableOm;
    }

    @VisibleForTesting
    public Boolean getPlayServicesAvailabilityFromAPI() {
        boolean z11;
        Boolean bool = null;
        try {
            GoogleApiAvailabilityLight googleApiAvailabilityLight = GoogleApiAvailabilityLight.getInstance();
            if (googleApiAvailabilityLight == null) {
                return null;
            }
            if (googleApiAvailabilityLight.isGooglePlayServicesAvailable(this.context) == 0) {
                z11 = true;
            } else {
                z11 = false;
            }
            bool = Boolean.valueOf(z11);
            addPlaySvcAvailabilityInCookie(bool.booleanValue());
            return bool;
        } catch (Exception unused) {
            Log.w(TAG, "Unexpected exception from Play services lib.");
            return bool;
        } catch (NoClassDefFoundError unused2) {
            Log.w(TAG, "Play services Not available");
            Boolean bool2 = Boolean.FALSE;
            try {
                addPlaySvcAvailabilityInCookie(false);
                return bool2;
            } catch (DatabaseHelper.DBException unused3) {
                Log.w(TAG, "Failure to write GPS availability to DB");
                return bool2;
            }
        }
    }

    @VisibleForTesting
    public Boolean getPlayServicesAvailabilityFromCookie() {
        Cookie cookie = (Cookie) this.repository.load(Cookie.IS_PLAY_SERVICE_AVAILABLE, Cookie.class).get(this.timeoutProvider.getTimeout(), TimeUnit.MILLISECONDS);
        if (cookie != null) {
            return cookie.getBoolean(Cookie.IS_PLAY_SERVICE_AVAILABLE);
        }
        return null;
    }

    public long getRetryAfterHeaderValue(com.vungle.warren.network.Response response) {
        try {
            return Long.parseLong(response.headers().get("Retry-After")) * 1000;
        } catch (NumberFormatException unused) {
            return 0L;
        }
    }

    public void init() {
        init(this.context);
    }

    @VisibleForTesting
    public Boolean isGooglePlayServicesAvailable() {
        if (this.isGooglePlayServicesAvailable == null) {
            this.isGooglePlayServicesAvailable = getPlayServicesAvailabilityFromCookie();
        }
        if (this.isGooglePlayServicesAvailable == null) {
            this.isGooglePlayServicesAvailable = getPlayServicesAvailabilityFromAPI();
        }
        return this.isGooglePlayServicesAvailable;
    }

    @VisibleForTesting
    public void overrideApi(VungleApi vungleApi) {
        this.api = vungleApi;
    }

    public boolean pingTPAT(String str) throws ClearTextTrafficException, MalformedURLException {
        boolean z11;
        NetworkSecurityPolicy networkSecurityPolicy;
        NetworkSecurityPolicy networkSecurityPolicy2;
        if (!TextUtils.isEmpty(str) && HttpUrl.parse(str) != null) {
            try {
                String host = new URL(str).getHost();
                int i11 = Build.VERSION.SDK_INT;
                if (i11 >= 24) {
                    networkSecurityPolicy2 = NetworkSecurityPolicy.getInstance();
                    z11 = networkSecurityPolicy2.isCleartextTrafficPermitted(host);
                } else if (i11 >= 23) {
                    networkSecurityPolicy = NetworkSecurityPolicy.getInstance();
                    z11 = networkSecurityPolicy.isCleartextTrafficPermitted();
                } else {
                    z11 = true;
                }
                if (!z11 && URLUtil.isHttpUrl(str)) {
                    SessionTracker.getInstance().trackEvent(new SessionData.Builder().setEvent(SessionEvent.TPAT).addData(SessionAttribute.SUCCESS, false).addData(SessionAttribute.REASON, "Clear Text Traffic is blocked").addData(SessionAttribute.URL, str).build());
                    throw new ClearTextTrafficException("Clear Text Traffic is blocked");
                }
                try {
                    com.vungle.warren.network.Response<Void> execute = this.api.pingTPAT(this.uaString, str).execute();
                    if (execute == null) {
                        SessionTracker.getInstance().trackEvent(new SessionData.Builder().setEvent(SessionEvent.TPAT).addData(SessionAttribute.SUCCESS, false).addData(SessionAttribute.REASON, "Error on pinging TPAT").addData(SessionAttribute.URL, str).build());
                    } else if (!execute.isSuccessful()) {
                        SessionTracker.getInstance().trackEvent(new SessionData.Builder().setEvent(SessionEvent.TPAT).addData(SessionAttribute.SUCCESS, false).addData(SessionAttribute.REASON, execute.code() + ": " + execute.message()).addData(SessionAttribute.URL, str).build());
                    }
                    return true;
                } catch (IOException e11) {
                    SessionTracker.getInstance().trackEvent(new SessionData.Builder().setEvent(SessionEvent.TPAT).addData(SessionAttribute.SUCCESS, false).addData(SessionAttribute.REASON, e11.getMessage()).addData(SessionAttribute.URL, str).build());
                    Log.d(TAG, "Error on pinging TPAT");
                    return false;
                }
            } catch (MalformedURLException unused) {
                SessionTracker.getInstance().trackEvent(new SessionData.Builder().setEvent(SessionEvent.TPAT).addData(SessionAttribute.SUCCESS, false).addData(SessionAttribute.REASON, "Invalid URL").addData(SessionAttribute.URL, str).build());
                throw new MalformedURLException("Invalid URL : " + str);
            }
        }
        SessionTracker.getInstance().trackEvent(new SessionData.Builder().setEvent(SessionEvent.TPAT).addData(SessionAttribute.SUCCESS, false).addData(SessionAttribute.REASON, "Invalid URL").addData(SessionAttribute.URL, str).build());
        throw new MalformedURLException("Invalid URL : " + str);
    }

    public Call<m> reportAd(m mVar) {
        if (this.reportAdEndpoint != null) {
            m mVar2 = new m();
            mVar2.u(TapjoyConstants.TJC_NOTIFICATION_DEVICE_PREFIX, getDeviceBody());
            mVar2.u("app", this.appBody);
            mVar2.u("request", mVar);
            mVar2.u("user", getUserBody());
            m extBody = getExtBody();
            if (extBody != null) {
                mVar2.u("ext", extBody);
            }
            return this.gzipApi.reportAd(getHeaderUa(), this.reportAdEndpoint, mVar2);
        }
        throw new IllegalStateException("API Client not configured yet! Must call /config first.");
    }

    public Call<m> reportNew() throws IllegalStateException {
        String str;
        if (this.newEndpoint != null) {
            HashMap hashMap = new HashMap(2);
            j C = this.appBody.C("id");
            String str2 = "";
            if (C == null) {
                str = "";
            } else {
                str = C.m();
            }
            hashMap.put("app_id", str);
            m deviceBody = getDeviceBody();
            if (PrivacyManager.getInstance().shouldSendAdIds()) {
                j C2 = deviceBody.C(IFA);
                if (C2 != null) {
                    str2 = C2.m();
                }
                hashMap.put(IFA, str2);
            }
            return this.api.reportNew(getHeaderUa(), this.newEndpoint, hashMap);
        }
        throw new IllegalStateException("API Client not configured yet! Must call /config first.");
    }

    public Call<m> requestAd(String str, String str2, boolean z11, @Nullable m mVar) throws IllegalStateException {
        if (this.requestAdEndpoint != null) {
            m mVar2 = new m();
            mVar2.u(TapjoyConstants.TJC_NOTIFICATION_DEVICE_PREFIX, getDeviceBody());
            mVar2.u("app", this.appBody);
            m userBody = getUserBody();
            if (mVar != null) {
                userBody.u("vision", mVar);
            }
            mVar2.u("user", userBody);
            m extBody = getExtBody();
            if (extBody != null) {
                mVar2.u("ext", extBody);
            }
            m mVar3 = new m();
            g gVar = new g();
            gVar.w(str);
            mVar3.u("placements", gVar);
            mVar3.w("header_bidding", Boolean.valueOf(z11));
            if (!TextUtils.isEmpty(str2)) {
                mVar3.z("ad_size", str2);
            }
            mVar2.u("request", mVar3);
            return this.gzipApi.ads(getHeaderUa(), this.requestAdEndpoint, mVar2);
        }
        throw new IllegalStateException("API Client not configured yet! Must call /config first.");
    }

    public Call<m> ri(m mVar) {
        if (this.riEndpoint != null) {
            m mVar2 = new m();
            mVar2.u(TapjoyConstants.TJC_NOTIFICATION_DEVICE_PREFIX, getDeviceBody());
            mVar2.u("app", this.appBody);
            mVar2.u("request", mVar);
            mVar2.u("user", getUserBody());
            m extBody = getExtBody();
            if (extBody != null) {
                mVar2.u("ext", extBody);
            }
            return this.api.ri(getHeaderUa(), this.riEndpoint, mVar2);
        }
        throw new IllegalStateException("API Client not configured yet! Must call /config first.");
    }

    public Call<m> sendAnalytics(Collection<CacheBust> collection) {
        String str;
        if (this.biLoggingEndpoint != null) {
            if (collection != null && !collection.isEmpty()) {
                m mVar = new m();
                mVar.u(TapjoyConstants.TJC_NOTIFICATION_DEVICE_PREFIX, getDeviceBody());
                mVar.u("app", this.appBody);
                m mVar2 = new m();
                g gVar = new g(collection.size());
                for (CacheBust cacheBust : collection) {
                    for (int i11 = 0; i11 < cacheBust.getEventIds().length; i11++) {
                        m mVar3 = new m();
                        if (cacheBust.getIdType() == 1) {
                            str = "campaign";
                        } else {
                            str = VisionDataDBAdapter.VisionDataColumns.COLUMN_CREATIVE;
                        }
                        mVar3.z(TypedValues.AttributesType.S_TARGET, str);
                        mVar3.z("id", cacheBust.getId());
                        mVar3.z("event_id", cacheBust.getEventIds()[i11]);
                        gVar.u(mVar3);
                    }
                }
                if (gVar.size() > 0) {
                    mVar2.u(CacheBustDBAdapter.CacheBustColumns.TABLE_NAME, gVar);
                }
                mVar.u("request", mVar2);
                return this.gzipApi.sendBiAnalytics(getHeaderUa(), this.biLoggingEndpoint, mVar);
            }
            throw new IllegalArgumentException("Cannot send analytics when bust and session data is empty");
        }
        throw new IllegalStateException("API Client not configured yet! Must call /config first.");
    }

    public Call<m> sendLog(m mVar) {
        if (this.logEndpoint != null) {
            return this.gzipApi.sendLog(getHeaderUa(), this.logEndpoint, mVar);
        }
        throw new IllegalStateException("API Client not configured yet! Must call /config first.");
    }

    public Call<m> sendSessionDataAnalytics(@NonNull g gVar) {
        if (this.biLoggingEndpoint != null) {
            m mVar = new m();
            mVar.u(TapjoyConstants.TJC_NOTIFICATION_DEVICE_PREFIX, getDeviceBody());
            mVar.u("app", this.appBody);
            m mVar2 = new m();
            mVar2.u("session_events", gVar);
            mVar.u("request", mVar2);
            return this.gzipApi.sendBiAnalytics(getHeaderUa(), this.biLoggingEndpoint, mVar);
        }
        throw new IllegalStateException("API Client not configured yet! Must call /config first.");
    }

    public void setAppId(String str) {
        setAppId(str, this.appBody);
    }

    public Call<m> willPlayAd(String str, boolean z11, String str2) {
        m mVar = new m();
        mVar.u(TapjoyConstants.TJC_NOTIFICATION_DEVICE_PREFIX, getDeviceBody());
        mVar.u("app", this.appBody);
        mVar.u("user", getUserBody());
        m mVar2 = new m();
        m mVar3 = new m();
        mVar3.z("reference_id", str);
        mVar3.w("is_auto_cached", Boolean.valueOf(z11));
        mVar2.u("placement", mVar3);
        mVar2.z(AdvertisementDBAdapter.AdvertisementColumns.COLUMN_AD_TOKEN, str2);
        mVar.u("request", mVar2);
        return this.timeoutApi.willPlayAd(getHeaderUa(), this.willPlayAdEndpoint, mVar);
    }

    @SuppressLint({"HardwareIds", "NewApi"})
    private synchronized m getDeviceBody(boolean z11) throws IllegalStateException {
        m d11;
        String str;
        boolean z12;
        boolean z13;
        boolean z14;
        int i11;
        int restrictBackgroundStatus;
        NetworkInfo activeNetworkInfo;
        d11 = this.baseDeviceInfo.d();
        m mVar = new m();
        AdvertisingInfo advertisingInfo = this.platform.getAdvertisingInfo();
        boolean z15 = advertisingInfo.limitAdTracking;
        String str2 = advertisingInfo.advertisingId;
        if (PrivacyManager.getInstance().shouldSendAdIds()) {
            if (str2 != null) {
                mVar.z(Platform.MANUFACTURER_AMAZON.equals(Build.MANUFACTURER) ? AMAZON_ADVERTISING_ID : GAID, str2);
                d11.z(IFA, str2);
            } else {
                String androidId = this.platform.getAndroidId();
                d11.z(IFA, !TextUtils.isEmpty(androidId) ? androidId : "");
                if (!TextUtils.isEmpty(androidId)) {
                    mVar.z("android_id", androidId);
                }
            }
        }
        if (!PrivacyManager.getInstance().shouldSendAdIds() || z11) {
            d11.H(IFA);
            mVar.H("android_id");
            mVar.H(GAID);
            mVar.H(AMAZON_ADVERTISING_ID);
        }
        d11.y("lmt", Integer.valueOf(z15 ? 1 : 0));
        mVar.w("is_google_play_services_available", Boolean.valueOf(Boolean.TRUE.equals(isGooglePlayServicesAvailable())));
        String appSetId = this.platform.getAppSetId();
        if (!TextUtils.isEmpty(appSetId)) {
            mVar.z(TapjoyConstants.TJC_APP_SET_ID, appSetId);
        }
        Context context = this.context;
        Intent registerReceiver = context != null ? context.registerReceiver(null, new IntentFilter("android.intent.action.BATTERY_CHANGED")) : null;
        if (registerReceiver != null) {
            int intExtra = registerReceiver.getIntExtra(AppLovinEventTypes.USER_COMPLETED_LEVEL, -1);
            int intExtra2 = registerReceiver.getIntExtra("scale", -1);
            if (intExtra > 0 && intExtra2 > 0) {
                mVar.y("battery_level", Float.valueOf(intExtra / intExtra2));
            }
            int intExtra3 = registerReceiver.getIntExtra("status", -1);
            if (intExtra3 == -1) {
                str = "UNKNOWN";
            } else {
                if (intExtra3 != 2 && intExtra3 != 5) {
                    str = "NOT_CHARGING";
                }
                int intExtra4 = registerReceiver.getIntExtra("plugged", -1);
                str = intExtra4 != 1 ? intExtra4 != 2 ? intExtra4 != 4 ? "BATTERY_PLUGGED_OTHERS" : "BATTERY_PLUGGED_WIRELESS" : "BATTERY_PLUGGED_USB" : "BATTERY_PLUGGED_AC";
            }
        } else {
            str = "UNKNOWN";
        }
        mVar.z("battery_state", str);
        PowerManager powerManager = (PowerManager) this.context.getSystemService("power");
        mVar.y("battery_saver_enabled", Integer.valueOf((powerManager == null || !powerManager.isPowerSaveMode()) ? 0 : 1));
        if (PermissionChecker.checkCallingOrSelfPermission(this.context, "android.permission.ACCESS_NETWORK_STATE") == 0) {
            String str3 = "NONE";
            String str4 = "unknown";
            ConnectivityManager connectivityManager = (ConnectivityManager) this.context.getSystemService("connectivity");
            if (connectivityManager != null && (activeNetworkInfo = connectivityManager.getActiveNetworkInfo()) != null) {
                int type = activeNetworkInfo.getType();
                if (type != 0) {
                    str3 = (type == 1 || type == 6) ? "WIFI" : type != 7 ? type != 9 ? "UNKNOWN" : "ETHERNET" : "BLUETOOTH";
                } else {
                    str3 = "MOBILE";
                    str4 = getConnectionTypeDetail(activeNetworkInfo.getSubtype());
                }
            }
            mVar.z(TapjoyConstants.TJC_CONNECTION_TYPE, str3);
            mVar.z("connection_type_detail", str4);
            if (Build.VERSION.SDK_INT >= 24) {
                if (connectivityManager.isActiveNetworkMetered()) {
                    restrictBackgroundStatus = connectivityManager.getRestrictBackgroundStatus();
                    mVar.z("data_saver_status", restrictBackgroundStatus != 1 ? restrictBackgroundStatus != 2 ? restrictBackgroundStatus != 3 ? "UNKNOWN" : "ENABLED" : "WHITELISTED" : "DISABLED");
                    mVar.y("network_metered", 1);
                } else {
                    mVar.z("data_saver_status", "NOT_APPLICABLE");
                    mVar.y("network_metered", 0);
                }
            }
        }
        mVar.z("locale", Locale.getDefault().toString());
        mVar.z("language", Locale.getDefault().getLanguage());
        mVar.z("time_zone", TimeZone.getDefault().getID());
        AudioManager audioManager = (AudioManager) this.context.getSystemService("audio");
        if (audioManager != null) {
            int streamMaxVolume = audioManager.getStreamMaxVolume(3);
            int streamVolume = audioManager.getStreamVolume(3);
            mVar.y("volume_level", Float.valueOf(streamVolume / streamMaxVolume));
            mVar.y("sound_enabled", Integer.valueOf(streamVolume > 0 ? 1 : 0));
        }
        File cache = this.cacheManager.getCache();
        cache.getPath();
        if (cache.exists() && cache.isDirectory()) {
            mVar.y("storage_bytes_available", Long.valueOf(this.cacheManager.getBytesAvailable()));
        }
        if (Platform.MANUFACTURER_AMAZON.equals(Build.MANUFACTURER)) {
            z12 = this.context.getApplicationContext().getPackageManager().hasSystemFeature("amazon.hardware.fire_tv");
        } else {
            if (Build.VERSION.SDK_INT < 23 ? !(this.context.getApplicationContext().getPackageManager().hasSystemFeature("com.google.android.tv") || !this.context.getApplicationContext().getPackageManager().hasSystemFeature("android.hardware.touchscreen")) : ((UiModeManager) this.context.getSystemService("uimode")).getCurrentModeType() != 4) {
                z12 = false;
            }
            z12 = true;
        }
        mVar.w("is_tv", Boolean.valueOf(z12));
        int i12 = Build.VERSION.SDK_INT;
        mVar.y("os_api_level", Integer.valueOf(i12));
        mVar.y("app_target_sdk_version", Integer.valueOf(this.context.getApplicationInfo().targetSdkVersion));
        if (i12 >= 24) {
            i11 = this.context.getApplicationInfo().minSdkVersion;
            mVar.y("app_min_sdk_version", Integer.valueOf(i11));
        }
        try {
        } catch (Settings.SettingNotFoundException e11) {
            Log.e(TAG, "isInstallNonMarketAppsEnabled Settings not found", e11);
        }
        if (i12 >= 26) {
            if (this.context.checkCallingOrSelfPermission("android.permission.REQUEST_INSTALL_PACKAGES") == 0) {
                z13 = this.context.getApplicationContext().getPackageManager().canRequestPackageInstalls();
            }
            z13 = false;
        } else {
            if (Settings.Secure.getInt(this.context.getContentResolver(), "install_non_market_apps") == 1) {
                z13 = true;
            }
            z13 = false;
        }
        mVar.w("is_sideload_enabled", Boolean.valueOf(z13));
        try {
            z14 = Environment.getExternalStorageState().equals("mounted");
        } catch (Exception unused) {
            Log.e(TAG, "External storage state failed");
            z14 = false;
        }
        mVar.y("sd_card_available", Integer.valueOf(z14 ? 1 : 0));
        mVar.z("os_name", Build.FINGERPRINT);
        mVar.z("vduid", "");
        d11.z("ua", this.uaString);
        m mVar2 = new m();
        m mVar3 = new m();
        mVar2.u("vungle", mVar3);
        d11.u("ext", mVar2);
        mVar3.u(Platform.MANUFACTURER_AMAZON.equals(Build.MANUFACTURER) ? "amazon" : "android", mVar);
        return d11;
    }

    private void setAppId(String str, m mVar) {
        mVar.z("id", str);
    }

    @VisibleForTesting
    public synchronized void init(Context context) {
        String str;
        m mVar = new m();
        mVar.z(TJAdUnitConstants.String.BUNDLE, context.getPackageName());
        try {
            str = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName;
        } catch (PackageManager.NameNotFoundException unused) {
            str = null;
        }
        if (str == null) {
            str = "1.0";
        }
        mVar.z("ver", str);
        m mVar2 = new m();
        String str2 = Build.MANUFACTURER;
        mVar2.z("make", str2);
        mVar2.z("model", Build.MODEL);
        mVar2.z("osv", Build.VERSION.RELEASE);
        mVar2.z("carrier", ((TelephonyManager) context.getSystemService(HintConstants.AUTOFILL_HINT_PHONE)).getNetworkOperatorName());
        mVar2.z("os", Platform.MANUFACTURER_AMAZON.equals(str2) ? "amazon" : "android");
        DisplayMetrics displayMetrics = new DisplayMetrics();
        ((WindowManager) context.getSystemService("window")).getDefaultDisplay().getMetrics(displayMetrics);
        mVar2.y("w", Integer.valueOf(displayMetrics.widthPixels));
        mVar2.y("h", Integer.valueOf(displayMetrics.heightPixels));
        try {
            String userAgent = this.platform.getUserAgent();
            this.uaString = userAgent;
            mVar2.z("ua", userAgent);
            initUserAgentLazy();
        } catch (Exception e11) {
            Log.e(TAG, "Cannot Get UserAgent. Setting Default Device UserAgent." + e11.getLocalizedMessage());
        }
        this.baseDeviceInfo = mVar2;
        this.appBody = mVar;
        this.isGooglePlayServicesAvailable = getPlayServicesAvailabilityFromAPI();
    }
}