mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2024-12-25 08:32:38 -06:00
683 lines
39 KiB
Java
683 lines
39 KiB
Java
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<String> 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<Certificate> readCertificateList = readCertificateList(buffer);
|
|
List<Certificate> 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<Certificate> 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<? extends Certificate> 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<String> 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<String> 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<String> 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();
|
|
}
|
|
}
|
|
}
|