package okhttp3; import com.google.common.net.HttpHeaders; import io.sentry.SentryBaseEvent; import io.sentry.protocol.Request; import io.sentry.protocol.SentryStackTrace; import io.sentry.protocol.TransactionInfo; import java.io.Closeable; import java.io.File; import java.io.Flushable; import java.io.IOException; import java.security.cert.Certificate; import java.security.cert.CertificateEncodingException; import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.TreeSet; import kotlin.Deprecated; import kotlin.DeprecationLevel; import kotlin.Metadata; import kotlin.ReplaceWith; import kotlin.Unit; import kotlin.collections.CollectionsKt; import kotlin.collections.SetsKt; import kotlin.io.CloseableKt; import kotlin.jvm.JvmStatic; import kotlin.jvm.internal.DefaultConstructorMarker; import kotlin.jvm.internal.Intrinsics; import kotlin.jvm.internal.StringCompanionObject; import kotlin.text.StringsKt; import kotlin.text.Typography; import okhttp3.Headers; import okhttp3.Request; import okhttp3.Response; import okhttp3.internal.Util; import okhttp3.internal.cache.CacheRequest; import okhttp3.internal.cache.CacheStrategy; import okhttp3.internal.cache.DiskLruCache; import okhttp3.internal.concurrent.TaskRunner; import okhttp3.internal.http.HttpMethod; import okhttp3.internal.http.StatusLine; import okhttp3.internal.io.FileSystem; import okhttp3.internal.platform.Platform; import okio.Buffer; import okio.BufferedSink; import okio.BufferedSource; import okio.ByteString; import okio.ForwardingSink; import okio.ForwardingSource; import okio.Okio; import okio.Sink; import okio.Source; /* compiled from: Cache.kt */ @Metadata(bv = {1, 0, 3}, d1 = {"\u0000r\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\t\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0010\b\n\u0000\n\u0002\u0010\u000b\n\u0002\b\f\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0006\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\t\n\u0002\u0018\u0002\n\u0002\b\u0006\n\u0002\u0010)\n\u0002\u0010\u000e\n\u0002\b\u0005\u0018\u0000 C2\u00020\u00012\u00020\u0002:\u0004BCDEB\u0017\b\u0016\u0012\u0006\u0010\u0003\u001a\u00020\u0004\u0012\u0006\u0010\u0005\u001a\u00020\u0006¢\u0006\u0002\u0010\u0007B\u001f\b\u0000\u0012\u0006\u0010\u0003\u001a\u00020\u0004\u0012\u0006\u0010\u0005\u001a\u00020\u0006\u0012\u0006\u0010\b\u001a\u00020\t¢\u0006\u0002\u0010\nJ\u0016\u0010\u001f\u001a\u00020 2\f\u0010!\u001a\b\u0018\u00010\"R\u00020\fH\u0002J\b\u0010#\u001a\u00020 H\u0016J\u0006\u0010$\u001a\u00020 J\r\u0010\u0003\u001a\u00020\u0004H\u0007¢\u0006\u0002\b%J\u0006\u0010&\u001a\u00020 J\b\u0010'\u001a\u00020 H\u0016J\u0017\u0010(\u001a\u0004\u0018\u00010)2\u0006\u0010*\u001a\u00020+H\u0000¢\u0006\u0002\b,J\u0006\u0010\u0010\u001a\u00020\u0011J\u0006\u0010-\u001a\u00020 J\u0006\u0010\u0005\u001a\u00020\u0006J\u0006\u0010\u0015\u001a\u00020\u0011J\u0017\u0010.\u001a\u0004\u0018\u00010/2\u0006\u00100\u001a\u00020)H\u0000¢\u0006\u0002\b1J\u0015\u00102\u001a\u00020 2\u0006\u0010*\u001a\u00020+H\u0000¢\u0006\u0002\b3J\u0006\u0010\u0016\u001a\u00020\u0011J\u0006\u00104\u001a\u00020\u0006J\r\u00105\u001a\u00020 H\u0000¢\u0006\u0002\b6J\u0015\u00107\u001a\u00020 2\u0006\u00108\u001a\u000209H\u0000¢\u0006\u0002\b:J\u001d\u0010;\u001a\u00020 2\u0006\u0010<\u001a\u00020)2\u0006\u0010=\u001a\u00020)H\u0000¢\u0006\u0002\b>J\f\u0010?\u001a\b\u0012\u0004\u0012\u00020A0@J\u0006\u0010\u0017\u001a\u00020\u0011J\u0006\u0010\u001c\u001a\u00020\u0011R\u0014\u0010\u000b\u001a\u00020\fX\u0080\u0004¢\u0006\b\n\u0000\u001a\u0004\b\r\u0010\u000eR\u0011\u0010\u0003\u001a\u00020\u00048G¢\u0006\u0006\u001a\u0004\b\u0003\u0010\u000fR\u000e\u0010\u0010\u001a\u00020\u0011X\u0082\u000e¢\u0006\u0002\n\u0000R\u0011\u0010\u0012\u001a\u00020\u00138F¢\u0006\u0006\u001a\u0004\b\u0012\u0010\u0014R\u000e\u0010\u0015\u001a\u00020\u0011X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u0016\u001a\u00020\u0011X\u0082\u000e¢\u0006\u0002\n\u0000R\u001a\u0010\u0017\u001a\u00020\u0011X\u0080\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\u0018\u0010\u0019\"\u0004\b\u001a\u0010\u001bR\u001a\u0010\u001c\u001a\u00020\u0011X\u0080\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\u001d\u0010\u0019\"\u0004\b\u001e\u0010\u001b¨\u0006F"}, d2 = {"Lokhttp3/Cache;", "Ljava/io/Closeable;", "Ljava/io/Flushable;", "directory", "Ljava/io/File;", "maxSize", "", "(Ljava/io/File;J)V", "fileSystem", "Lokhttp3/internal/io/FileSystem;", "(Ljava/io/File;JLokhttp3/internal/io/FileSystem;)V", "cache", "Lokhttp3/internal/cache/DiskLruCache;", "getCache$okhttp", "()Lokhttp3/internal/cache/DiskLruCache;", "()Ljava/io/File;", "hitCount", "", "isClosed", "", "()Z", "networkCount", "requestCount", "writeAbortCount", "getWriteAbortCount$okhttp", "()I", "setWriteAbortCount$okhttp", "(I)V", "writeSuccessCount", "getWriteSuccessCount$okhttp", "setWriteSuccessCount$okhttp", "abortQuietly", "", "editor", "Lokhttp3/internal/cache/DiskLruCache$Editor;", "close", "delete", "-deprecated_directory", "evictAll", "flush", "get", "Lokhttp3/Response;", SentryBaseEvent.JsonKeys.REQUEST, "Lokhttp3/Request;", "get$okhttp", "initialize", "put", "Lokhttp3/internal/cache/CacheRequest;", io.sentry.protocol.Response.TYPE, "put$okhttp", "remove", "remove$okhttp", "size", "trackConditionalCacheHit", "trackConditionalCacheHit$okhttp", "trackResponse", "cacheStrategy", "Lokhttp3/internal/cache/CacheStrategy;", "trackResponse$okhttp", "update", "cached", "network", "update$okhttp", "urls", "", "", "CacheResponseBody", "Companion", "Entry", "RealCacheRequest", "okhttp"}, k = 1, mv = {1, 4, 0}) /* loaded from: classes3.dex */ public final class Cache implements Closeable, Flushable { /* renamed from: Companion, reason: from kotlin metadata */ public static final Companion INSTANCE = new Companion(null); private static final int ENTRY_BODY = 1; private static final int ENTRY_COUNT = 2; private static final int ENTRY_METADATA = 0; private static final int VERSION = 201105; private final DiskLruCache cache; private int hitCount; private int networkCount; private int requestCount; private int writeAbortCount; private int writeSuccessCount; @JvmStatic public static final String key(HttpUrl httpUrl) { return INSTANCE.key(httpUrl); } /* renamed from: getCache$okhttp, reason: from getter */ public final DiskLruCache getCache() { return this.cache; } /* renamed from: getWriteAbortCount$okhttp, reason: from getter */ public final int getWriteAbortCount() { return this.writeAbortCount; } /* renamed from: getWriteSuccessCount$okhttp, reason: from getter */ public final int getWriteSuccessCount() { return this.writeSuccessCount; } public final void setWriteAbortCount$okhttp(int i) { this.writeAbortCount = i; } public final void setWriteSuccessCount$okhttp(int i) { this.writeSuccessCount = i; } public Cache(File directory, long j, FileSystem fileSystem) { Intrinsics.checkNotNullParameter(directory, "directory"); Intrinsics.checkNotNullParameter(fileSystem, "fileSystem"); this.cache = new DiskLruCache(fileSystem, directory, VERSION, 2, j, TaskRunner.INSTANCE); } public final boolean isClosed() { return this.cache.isClosed(); } /* JADX WARN: 'this' call moved to the top of the method (can break code semantics) */ public Cache(File directory, long j) { this(directory, j, FileSystem.SYSTEM); Intrinsics.checkNotNullParameter(directory, "directory"); } public final Response get$okhttp(Request request) { Intrinsics.checkNotNullParameter(request, "request"); try { DiskLruCache.Snapshot snapshot = this.cache.get(INSTANCE.key(request.url())); if (snapshot != null) { try { Entry entry = new Entry(snapshot.getSource(0)); Response response = entry.response(snapshot); if (entry.matches(request, response)) { return response; } ResponseBody body = response.body(); if (body != null) { Util.closeQuietly(body); } return null; } catch (IOException unused) { Util.closeQuietly(snapshot); } } } catch (IOException unused2) { } return null; } public final CacheRequest put$okhttp(Response response) { DiskLruCache.Editor editor; Intrinsics.checkNotNullParameter(response, "response"); String method = response.request().method(); if (HttpMethod.INSTANCE.invalidatesCache(response.request().method())) { try { remove$okhttp(response.request()); } catch (IOException unused) { } return null; } if (!Intrinsics.areEqual(method, "GET")) { return null; } Companion companion = INSTANCE; if (companion.hasVaryAll(response)) { return null; } Entry entry = new Entry(response); try { editor = DiskLruCache.edit$default(this.cache, companion.key(response.request().url()), 0L, 2, null); if (editor == null) { return null; } try { entry.writeTo(editor); return new RealCacheRequest(this, editor); } catch (IOException unused2) { abortQuietly(editor); return null; } } catch (IOException unused3) { editor = null; } } public final void remove$okhttp(Request request) throws IOException { Intrinsics.checkNotNullParameter(request, "request"); this.cache.remove(INSTANCE.key(request.url())); } public final void update$okhttp(Response cached, Response network) { Intrinsics.checkNotNullParameter(cached, "cached"); Intrinsics.checkNotNullParameter(network, "network"); Entry entry = new Entry(network); ResponseBody body = cached.body(); if (body == null) { throw new NullPointerException("null cannot be cast to non-null type okhttp3.Cache.CacheResponseBody"); } DiskLruCache.Editor editor = null; try { editor = ((CacheResponseBody) body).getSnapshot().edit(); if (editor != null) { entry.writeTo(editor); editor.commit(); } } catch (IOException unused) { abortQuietly(editor); } } private final void abortQuietly(DiskLruCache.Editor editor) { if (editor != null) { try { editor.abort(); } catch (IOException unused) { } } } public final void initialize() throws IOException { this.cache.initialize(); } public final void delete() throws IOException { this.cache.delete(); } public final void evictAll() throws IOException { this.cache.evictAll(); } public final Iterator urls() throws IOException { return new Cache$urls$1(this); } public final synchronized int writeAbortCount() { return this.writeAbortCount; } public final synchronized int writeSuccessCount() { return this.writeSuccessCount; } public final long size() throws IOException { return this.cache.size(); } public final long maxSize() { return this.cache.getMaxSize(); } @Override // java.io.Flushable public void flush() throws IOException { this.cache.flush(); } @Override // java.io.Closeable, java.lang.AutoCloseable public void close() throws IOException { this.cache.close(); } public final File directory() { return this.cache.getDirectory(); } @Deprecated(level = DeprecationLevel.ERROR, message = "moved to val", replaceWith = @ReplaceWith(expression = "directory", imports = {})) /* renamed from: -deprecated_directory, reason: not valid java name */ public final File m7281deprecated_directory() { return this.cache.getDirectory(); } public final synchronized void trackResponse$okhttp(CacheStrategy cacheStrategy) { Intrinsics.checkNotNullParameter(cacheStrategy, "cacheStrategy"); this.requestCount++; if (cacheStrategy.getNetworkRequest() != null) { this.networkCount++; } else if (cacheStrategy.getCacheResponse() != null) { this.hitCount++; } } public final synchronized void trackConditionalCacheHit$okhttp() { this.hitCount++; } public final synchronized int networkCount() { return this.networkCount; } public final synchronized int hitCount() { return this.hitCount; } public final synchronized int requestCount() { return this.requestCount; } /* compiled from: Cache.kt */ @Metadata(bv = {1, 0, 3}, d1 = {"\u0000,\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u000b\n\u0002\b\u0005\n\u0002\u0010\u0002\n\u0000\b\u0082\u0004\u0018\u00002\u00020\u0001B\u0011\u0012\n\u0010\u0002\u001a\u00060\u0003R\u00020\u0004¢\u0006\u0002\u0010\u0005J\b\u0010\u000f\u001a\u00020\u0010H\u0016J\b\u0010\u0006\u001a\u00020\u0007H\u0016R\u000e\u0010\u0006\u001a\u00020\u0007X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\b\u001a\u00020\u0007X\u0082\u0004¢\u0006\u0002\n\u0000R\u001a\u0010\t\u001a\u00020\nX\u0086\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\u000b\u0010\f\"\u0004\b\r\u0010\u000eR\u0012\u0010\u0002\u001a\u00060\u0003R\u00020\u0004X\u0082\u0004¢\u0006\u0002\n\u0000¨\u0006\u0011"}, d2 = {"Lokhttp3/Cache$RealCacheRequest;", "Lokhttp3/internal/cache/CacheRequest;", "editor", "Lokhttp3/internal/cache/DiskLruCache$Editor;", "Lokhttp3/internal/cache/DiskLruCache;", "(Lokhttp3/Cache;Lokhttp3/internal/cache/DiskLruCache$Editor;)V", "body", "Lokio/Sink;", "cacheOut", "done", "", "getDone", "()Z", "setDone", "(Z)V", "abort", "", "okhttp"}, k = 1, mv = {1, 4, 0}) /* loaded from: classes3.dex */ private final class RealCacheRequest implements CacheRequest { private final Sink body; private final Sink cacheOut; private boolean done; private final DiskLruCache.Editor editor; final /* synthetic */ Cache this$0; @Override // okhttp3.internal.cache.CacheRequest /* renamed from: body, reason: from getter */ public Sink getBody() { return this.body; } public final boolean getDone() { return this.done; } public final void setDone(boolean z) { this.done = z; } public RealCacheRequest(Cache cache, DiskLruCache.Editor editor) { Intrinsics.checkNotNullParameter(editor, "editor"); this.this$0 = cache; this.editor = editor; Sink newSink = editor.newSink(1); this.cacheOut = newSink; this.body = new ForwardingSink(newSink) { // from class: okhttp3.Cache.RealCacheRequest.1 @Override // okio.ForwardingSink, okio.Sink, java.io.Closeable, java.lang.AutoCloseable public void close() throws IOException { synchronized (RealCacheRequest.this.this$0) { if (RealCacheRequest.this.getDone()) { return; } RealCacheRequest.this.setDone(true); Cache cache2 = RealCacheRequest.this.this$0; cache2.setWriteSuccessCount$okhttp(cache2.getWriteSuccessCount() + 1); super.close(); RealCacheRequest.this.editor.commit(); } } }; } @Override // okhttp3.internal.cache.CacheRequest public void abort() { synchronized (this.this$0) { if (this.done) { return; } this.done = true; Cache cache = this.this$0; cache.setWriteAbortCount$okhttp(cache.getWriteAbortCount() + 1); Util.closeQuietly(this.cacheOut); try { this.editor.abort(); } catch (IOException unused) { } } } } /* compiled from: Cache.kt */ @Metadata(bv = {1, 0, 3}, d1 = {"\u0000\u0080\u0001\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\b\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000b\n\u0002\b\u0002\n\u0002\u0010\u000e\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\t\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0005\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010 \n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\u0002\b\u0002\u0018\u0000 .2\u00020\u0001:\u0001.B\u000f\b\u0016\u0012\u0006\u0010\u0002\u001a\u00020\u0003¢\u0006\u0002\u0010\u0004B\u000f\b\u0016\u0012\u0006\u0010\u0005\u001a\u00020\u0006¢\u0006\u0002\u0010\u0007J\u0016\u0010\u001b\u001a\u00020\r2\u0006\u0010\u001c\u001a\u00020\u001d2\u0006\u0010\u0005\u001a\u00020\u0006J\u0016\u0010\u001e\u001a\b\u0012\u0004\u0012\u00020 0\u001f2\u0006\u0010!\u001a\u00020\"H\u0002J\u0012\u0010\u0005\u001a\u00020\u00062\n\u0010#\u001a\u00060$R\u00020%J\u001e\u0010&\u001a\u00020'2\u0006\u0010(\u001a\u00020)2\f\u0010*\u001a\b\u0012\u0004\u0012\u00020 0\u001fH\u0002J\u0012\u0010+\u001a\u00020'2\n\u0010,\u001a\u00060-R\u00020%R\u000e\u0010\b\u001a\u00020\tX\u0082\u0004¢\u0006\u0002\n\u0000R\u0010\u0010\n\u001a\u0004\u0018\u00010\u000bX\u0082\u0004¢\u0006\u0002\n\u0000R\u0014\u0010\f\u001a\u00020\r8BX\u0082\u0004¢\u0006\u0006\u001a\u0004\b\f\u0010\u000eR\u000e\u0010\u000f\u001a\u00020\u0010X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u0011\u001a\u00020\u0012X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u0013\u001a\u00020\u0014X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u0015\u001a\u00020\u0010X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u0016\u001a\u00020\u0017X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u0018\u001a\u00020\u0014X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u0019\u001a\u00020\u0010X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u001a\u001a\u00020\u0017X\u0082\u0004¢\u0006\u0002\n\u0000¨\u0006/"}, d2 = {"Lokhttp3/Cache$Entry;", "", "rawSource", "Lokio/Source;", "(Lokio/Source;)V", io.sentry.protocol.Response.TYPE, "Lokhttp3/Response;", "(Lokhttp3/Response;)V", "code", "", "handshake", "Lokhttp3/Handshake;", "isHttps", "", "()Z", "message", "", "protocol", "Lokhttp3/Protocol;", "receivedResponseMillis", "", "requestMethod", "responseHeaders", "Lokhttp3/Headers;", "sentRequestMillis", Request.JsonKeys.URL, "varyHeaders", "matches", SentryBaseEvent.JsonKeys.REQUEST, "Lokhttp3/Request;", "readCertificateList", "", "Ljava/security/cert/Certificate;", TransactionInfo.JsonKeys.SOURCE, "Lokio/BufferedSource;", SentryStackTrace.JsonKeys.SNAPSHOT, "Lokhttp3/internal/cache/DiskLruCache$Snapshot;", "Lokhttp3/internal/cache/DiskLruCache;", "writeCertList", "", "sink", "Lokio/BufferedSink;", "certificates", "writeTo", "editor", "Lokhttp3/internal/cache/DiskLruCache$Editor;", "Companion", "okhttp"}, k = 1, mv = {1, 4, 0}) /* loaded from: classes3.dex */ private static final class Entry { private final int code; private final Handshake handshake; private final String message; private final Protocol protocol; private final long receivedResponseMillis; private final String requestMethod; private final Headers responseHeaders; private final long sentRequestMillis; private final String url; private final Headers varyHeaders; private static final String SENT_MILLIS = Platform.INSTANCE.get().getPrefix() + "-Sent-Millis"; private static final String RECEIVED_MILLIS = Platform.INSTANCE.get().getPrefix() + "-Received-Millis"; private final boolean isHttps() { return StringsKt.startsWith$default(this.url, "https://", false, 2, (Object) null); } public Entry(Source rawSource) throws IOException { TlsVersion tlsVersion; Intrinsics.checkNotNullParameter(rawSource, "rawSource"); try { BufferedSource buffer = Okio.buffer(rawSource); this.url = buffer.readUtf8LineStrict(); this.requestMethod = buffer.readUtf8LineStrict(); Headers.Builder builder = new Headers.Builder(); int readInt$okhttp = Cache.INSTANCE.readInt$okhttp(buffer); for (int i = 0; i < readInt$okhttp; i++) { builder.addLenient$okhttp(buffer.readUtf8LineStrict()); } this.varyHeaders = builder.build(); StatusLine parse = StatusLine.INSTANCE.parse(buffer.readUtf8LineStrict()); this.protocol = parse.protocol; this.code = parse.code; this.message = parse.message; Headers.Builder builder2 = new Headers.Builder(); int readInt$okhttp2 = Cache.INSTANCE.readInt$okhttp(buffer); for (int i2 = 0; i2 < readInt$okhttp2; i2++) { builder2.addLenient$okhttp(buffer.readUtf8LineStrict()); } String str = SENT_MILLIS; String str2 = builder2.get(str); String str3 = RECEIVED_MILLIS; String str4 = builder2.get(str3); builder2.removeAll(str); builder2.removeAll(str3); this.sentRequestMillis = str2 != null ? Long.parseLong(str2) : 0L; this.receivedResponseMillis = str4 != null ? Long.parseLong(str4) : 0L; this.responseHeaders = builder2.build(); if (isHttps()) { String readUtf8LineStrict = buffer.readUtf8LineStrict(); if (readUtf8LineStrict.length() > 0) { throw new IOException("expected \"\" but was \"" + readUtf8LineStrict + Typography.quote); } CipherSuite forJavaName = CipherSuite.INSTANCE.forJavaName(buffer.readUtf8LineStrict()); List readCertificateList = readCertificateList(buffer); List readCertificateList2 = readCertificateList(buffer); if (!buffer.exhausted()) { tlsVersion = TlsVersion.INSTANCE.forJavaName(buffer.readUtf8LineStrict()); } else { tlsVersion = TlsVersion.SSL_3_0; } this.handshake = Handshake.INSTANCE.get(tlsVersion, forJavaName, readCertificateList, readCertificateList2); } else { this.handshake = null; } } finally { rawSource.close(); } } public Entry(Response response) { Intrinsics.checkNotNullParameter(response, "response"); this.url = response.request().url().getUrl(); this.varyHeaders = Cache.INSTANCE.varyHeaders(response); this.requestMethod = response.request().method(); this.protocol = response.protocol(); this.code = response.code(); this.message = response.message(); this.responseHeaders = response.headers(); this.handshake = response.handshake(); this.sentRequestMillis = response.sentRequestAtMillis(); this.receivedResponseMillis = response.receivedResponseAtMillis(); } public final void writeTo(DiskLruCache.Editor editor) throws IOException { Intrinsics.checkNotNullParameter(editor, "editor"); BufferedSink buffer = Okio.buffer(editor.newSink(0)); try { BufferedSink bufferedSink = buffer; bufferedSink.writeUtf8(this.url).writeByte(10); bufferedSink.writeUtf8(this.requestMethod).writeByte(10); bufferedSink.writeDecimalLong(this.varyHeaders.size()).writeByte(10); int size = this.varyHeaders.size(); for (int i = 0; i < size; i++) { bufferedSink.writeUtf8(this.varyHeaders.name(i)).writeUtf8(": ").writeUtf8(this.varyHeaders.value(i)).writeByte(10); } bufferedSink.writeUtf8(new StatusLine(this.protocol, this.code, this.message).toString()).writeByte(10); bufferedSink.writeDecimalLong(this.responseHeaders.size() + 2).writeByte(10); int size2 = this.responseHeaders.size(); for (int i2 = 0; i2 < size2; i2++) { bufferedSink.writeUtf8(this.responseHeaders.name(i2)).writeUtf8(": ").writeUtf8(this.responseHeaders.value(i2)).writeByte(10); } bufferedSink.writeUtf8(SENT_MILLIS).writeUtf8(": ").writeDecimalLong(this.sentRequestMillis).writeByte(10); bufferedSink.writeUtf8(RECEIVED_MILLIS).writeUtf8(": ").writeDecimalLong(this.receivedResponseMillis).writeByte(10); if (isHttps()) { bufferedSink.writeByte(10); Handshake handshake = this.handshake; Intrinsics.checkNotNull(handshake); bufferedSink.writeUtf8(handshake.cipherSuite().javaName()).writeByte(10); writeCertList(bufferedSink, this.handshake.peerCertificates()); writeCertList(bufferedSink, this.handshake.localCertificates()); bufferedSink.writeUtf8(this.handshake.tlsVersion().javaName()).writeByte(10); } Unit unit = Unit.INSTANCE; CloseableKt.closeFinally(buffer, null); } finally { } } private final List readCertificateList(BufferedSource source) throws IOException { int readInt$okhttp = Cache.INSTANCE.readInt$okhttp(source); if (readInt$okhttp == -1) { return CollectionsKt.emptyList(); } try { CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); ArrayList arrayList = new ArrayList(readInt$okhttp); for (int i = 0; i < readInt$okhttp; i++) { String readUtf8LineStrict = source.readUtf8LineStrict(); Buffer buffer = new Buffer(); ByteString decodeBase64 = ByteString.INSTANCE.decodeBase64(readUtf8LineStrict); Intrinsics.checkNotNull(decodeBase64); buffer.write(decodeBase64); arrayList.add(certificateFactory.generateCertificate(buffer.inputStream())); } return arrayList; } catch (CertificateException e) { throw new IOException(e.getMessage()); } } private final void writeCertList(BufferedSink sink, List certificates) throws IOException { try { sink.writeDecimalLong(certificates.size()).writeByte(10); int size = certificates.size(); for (int i = 0; i < size; i++) { byte[] bytes = certificates.get(i).getEncoded(); ByteString.Companion companion = ByteString.INSTANCE; Intrinsics.checkNotNullExpressionValue(bytes, "bytes"); sink.writeUtf8(ByteString.Companion.of$default(companion, bytes, 0, 0, 3, null).base64()).writeByte(10); } } catch (CertificateEncodingException e) { throw new IOException(e.getMessage()); } } public final boolean matches(Request request, Response response) { Intrinsics.checkNotNullParameter(request, "request"); Intrinsics.checkNotNullParameter(response, "response"); return Intrinsics.areEqual(this.url, request.url().getUrl()) && Intrinsics.areEqual(this.requestMethod, request.method()) && Cache.INSTANCE.varyMatches(response, this.varyHeaders, request); } public final Response response(DiskLruCache.Snapshot snapshot) { Intrinsics.checkNotNullParameter(snapshot, "snapshot"); String str = this.responseHeaders.get(HttpHeaders.CONTENT_TYPE); String str2 = this.responseHeaders.get(HttpHeaders.CONTENT_LENGTH); return new Response.Builder().request(new Request.Builder().url(this.url).method(this.requestMethod, null).headers(this.varyHeaders).build()).protocol(this.protocol).code(this.code).message(this.message).headers(this.responseHeaders).body(new CacheResponseBody(snapshot, str, str2)).handshake(this.handshake).sentRequestAtMillis(this.sentRequestMillis).receivedResponseAtMillis(this.receivedResponseMillis).build(); } } /* JADX INFO: Access modifiers changed from: private */ /* compiled from: Cache.kt */ @Metadata(bv = {1, 0, 3}, d1 = {"\u00000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000e\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\t\n\u0002\u0018\u0002\n\u0002\b\u0002\b\u0002\u0018\u00002\u00020\u0001B%\u0012\n\u0010\u0002\u001a\u00060\u0003R\u00020\u0004\u0012\b\u0010\u0005\u001a\u0004\u0018\u00010\u0006\u0012\b\u0010\u0007\u001a\u0004\u0018\u00010\u0006¢\u0006\u0002\u0010\bJ\b\u0010\u0007\u001a\u00020\rH\u0016J\n\u0010\u0005\u001a\u0004\u0018\u00010\u000eH\u0016J\b\u0010\u000f\u001a\u00020\nH\u0016R\u000e\u0010\t\u001a\u00020\nX\u0082\u0004¢\u0006\u0002\n\u0000R\u0010\u0010\u0007\u001a\u0004\u0018\u00010\u0006X\u0082\u0004¢\u0006\u0002\n\u0000R\u0010\u0010\u0005\u001a\u0004\u0018\u00010\u0006X\u0082\u0004¢\u0006\u0002\n\u0000R\u0015\u0010\u0002\u001a\u00060\u0003R\u00020\u0004¢\u0006\b\n\u0000\u001a\u0004\b\u000b\u0010\f¨\u0006\u0010"}, d2 = {"Lokhttp3/Cache$CacheResponseBody;", "Lokhttp3/ResponseBody;", SentryStackTrace.JsonKeys.SNAPSHOT, "Lokhttp3/internal/cache/DiskLruCache$Snapshot;", "Lokhttp3/internal/cache/DiskLruCache;", "contentType", "", "contentLength", "(Lokhttp3/internal/cache/DiskLruCache$Snapshot;Ljava/lang/String;Ljava/lang/String;)V", "bodySource", "Lokio/BufferedSource;", "getSnapshot", "()Lokhttp3/internal/cache/DiskLruCache$Snapshot;", "", "Lokhttp3/MediaType;", TransactionInfo.JsonKeys.SOURCE, "okhttp"}, k = 1, mv = {1, 4, 0}) /* loaded from: classes3.dex */ public static final class CacheResponseBody extends ResponseBody { private final BufferedSource bodySource; private final String contentLength; private final String contentType; private final DiskLruCache.Snapshot snapshot; public final DiskLruCache.Snapshot getSnapshot() { return this.snapshot; } @Override // okhttp3.ResponseBody /* renamed from: source, reason: from getter */ public BufferedSource getBodySource() { return this.bodySource; } public CacheResponseBody(DiskLruCache.Snapshot snapshot, String str, String str2) { Intrinsics.checkNotNullParameter(snapshot, "snapshot"); this.snapshot = snapshot; this.contentType = str; this.contentLength = str2; final Source source = snapshot.getSource(1); this.bodySource = Okio.buffer(new ForwardingSource(source) { // from class: okhttp3.Cache.CacheResponseBody.1 @Override // okio.ForwardingSource, okio.Source, java.io.Closeable, java.lang.AutoCloseable public void close() throws IOException { CacheResponseBody.this.getSnapshot().close(); super.close(); } }); } @Override // okhttp3.ResponseBody /* renamed from: contentType */ public MediaType get$contentType() { String str = this.contentType; if (str != null) { return MediaType.INSTANCE.parse(str); } return null; } @Override // okhttp3.ResponseBody /* renamed from: contentLength */ public long getContentLength() { String str = this.contentLength; if (str != null) { return Util.toLongOrDefault(str, -1L); } return -1L; } } /* compiled from: Cache.kt */ @Metadata(bv = {1, 0, 3}, d1 = {"\u0000N\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\b\n\u0002\b\u0004\n\u0002\u0010\u000e\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010\u000b\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\"\n\u0000\b\u0086\u0003\u0018\u00002\u00020\u0001B\u0007\b\u0002¢\u0006\u0002\u0010\u0002J\u0010\u0010\b\u001a\u00020\t2\u0006\u0010\n\u001a\u00020\u000bH\u0007J\u0015\u0010\f\u001a\u00020\u00042\u0006\u0010\r\u001a\u00020\u000eH\u0000¢\u0006\u0002\b\u000fJ\u0018\u0010\u0010\u001a\u00020\u00112\u0006\u0010\u0012\u001a\u00020\u00112\u0006\u0010\u0013\u001a\u00020\u0011H\u0002J\u001e\u0010\u0014\u001a\u00020\u00152\u0006\u0010\u0016\u001a\u00020\u00172\u0006\u0010\u0018\u001a\u00020\u00112\u0006\u0010\u0019\u001a\u00020\u001aJ\n\u0010\u001b\u001a\u00020\u0015*\u00020\u0017J\u0012\u0010\u001c\u001a\b\u0012\u0004\u0012\u00020\t0\u001d*\u00020\u0011H\u0002J\n\u0010\u0010\u001a\u00020\u0011*\u00020\u0017R\u000e\u0010\u0003\u001a\u00020\u0004X\u0082T¢\u0006\u0002\n\u0000R\u000e\u0010\u0005\u001a\u00020\u0004X\u0082T¢\u0006\u0002\n\u0000R\u000e\u0010\u0006\u001a\u00020\u0004X\u0082T¢\u0006\u0002\n\u0000R\u000e\u0010\u0007\u001a\u00020\u0004X\u0082T¢\u0006\u0002\n\u0000¨\u0006\u001e"}, d2 = {"Lokhttp3/Cache$Companion;", "", "()V", "ENTRY_BODY", "", "ENTRY_COUNT", "ENTRY_METADATA", "VERSION", "key", "", Request.JsonKeys.URL, "Lokhttp3/HttpUrl;", "readInt", TransactionInfo.JsonKeys.SOURCE, "Lokio/BufferedSource;", "readInt$okhttp", "varyHeaders", "Lokhttp3/Headers;", "requestHeaders", "responseHeaders", "varyMatches", "", "cachedResponse", "Lokhttp3/Response;", "cachedRequest", "newRequest", "Lokhttp3/Request;", "hasVaryAll", "varyFields", "", "okhttp"}, k = 1, mv = {1, 4, 0}) /* loaded from: classes3.dex */ public static final class Companion { private Companion() { } public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) { this(); } @JvmStatic public final String key(HttpUrl url) { Intrinsics.checkNotNullParameter(url, "url"); return ByteString.INSTANCE.encodeUtf8(url.getUrl()).md5().hex(); } public final int readInt$okhttp(BufferedSource source) throws IOException { Intrinsics.checkNotNullParameter(source, "source"); try { long readDecimalLong = source.readDecimalLong(); String readUtf8LineStrict = source.readUtf8LineStrict(); if (readDecimalLong < 0 || readDecimalLong > Integer.MAX_VALUE || readUtf8LineStrict.length() > 0) { throw new IOException("expected an int but was \"" + readDecimalLong + readUtf8LineStrict + Typography.quote); } return (int) readDecimalLong; } catch (NumberFormatException e) { throw new IOException(e.getMessage()); } } public final boolean varyMatches(Response cachedResponse, Headers cachedRequest, Request newRequest) { Intrinsics.checkNotNullParameter(cachedResponse, "cachedResponse"); Intrinsics.checkNotNullParameter(cachedRequest, "cachedRequest"); Intrinsics.checkNotNullParameter(newRequest, "newRequest"); Set varyFields = varyFields(cachedResponse.headers()); if ((varyFields instanceof Collection) && varyFields.isEmpty()) { return true; } for (String str : varyFields) { if (!Intrinsics.areEqual(cachedRequest.values(str), newRequest.headers(str))) { return false; } } return true; } public final boolean hasVaryAll(Response hasVaryAll) { Intrinsics.checkNotNullParameter(hasVaryAll, "$this$hasVaryAll"); return varyFields(hasVaryAll.headers()).contains("*"); } private final Set varyFields(Headers headers) { TreeSet treeSet = null; int size = headers.size(); for (int i = 0; i < size; i++) { if (StringsKt.equals(HttpHeaders.VARY, headers.name(i), true)) { String value = headers.value(i); if (treeSet == null) { treeSet = new TreeSet(StringsKt.getCASE_INSENSITIVE_ORDER(StringCompanionObject.INSTANCE)); } for (String str : StringsKt.split$default((CharSequence) value, new char[]{','}, false, 0, 6, (Object) null)) { if (str == null) { throw new NullPointerException("null cannot be cast to non-null type kotlin.CharSequence"); } treeSet.add(StringsKt.trim((CharSequence) str).toString()); } } } return treeSet != null ? treeSet : SetsKt.emptySet(); } public final Headers varyHeaders(Response varyHeaders) { Intrinsics.checkNotNullParameter(varyHeaders, "$this$varyHeaders"); Response networkResponse = varyHeaders.networkResponse(); Intrinsics.checkNotNull(networkResponse); return varyHeaders(networkResponse.request().headers(), varyHeaders.headers()); } private final Headers varyHeaders(Headers requestHeaders, Headers responseHeaders) { Set varyFields = varyFields(responseHeaders); if (varyFields.isEmpty()) { return Util.EMPTY_HEADERS; } Headers.Builder builder = new Headers.Builder(); int size = requestHeaders.size(); for (int i = 0; i < size; i++) { String name = requestHeaders.name(i); if (varyFields.contains(name)) { builder.add(name, requestHeaders.value(i)); } } return builder.build(); } } }