Rabbit-R1/original r1/java/sources/io/sentry/okhttp/SentryOkHttpInterceptor.java
2024-05-21 17:08:36 -04:00

261 lines
14 KiB
Java

package io.sentry.okhttp;
import io.sentry.Breadcrumb;
import io.sentry.Hint;
import io.sentry.HttpStatusCodeRange;
import io.sentry.IHub;
import io.sentry.ISpan;
import io.sentry.SentryBaseEvent;
import io.sentry.SentryIntegrationPackageStorage;
import io.sentry.SpanDataConvention;
import io.sentry.TypeCheckHint;
import io.sentry.protocol.Response;
import io.sentry.util.IntegrationUtils;
import io.sentry.util.PropagationTargetsUtils;
import java.util.Iterator;
import java.util.List;
import kotlin.Metadata;
import kotlin.Unit;
import kotlin.jvm.functions.Function1;
import kotlin.jvm.internal.Intrinsics;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
/* compiled from: SentryOkHttpInterceptor.kt */
@Metadata(d1 = {"\u0000j\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u000b\n\u0000\n\u0002\u0010 \n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000e\n\u0002\b\u0003\n\u0002\u0010\b\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\u0005\n\u0002\u0010\t\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\b\u0016\u0018\u00002\u00020\u0001:\u0001)B\u0007\b\u0016¢\u0006\u0002\u0010\u0002B\u000f\b\u0016\u0012\u0006\u0010\u0003\u001a\u00020\u0004¢\u0006\u0002\u0010\u0005B\u000f\b\u0016\u0012\u0006\u0010\u0006\u001a\u00020\u0007¢\u0006\u0002\u0010\bBE\u0012\b\b\u0002\u0010\u0003\u001a\u00020\u0004\u0012\n\b\u0002\u0010\u0006\u001a\u0004\u0018\u00010\u0007\u0012\b\b\u0002\u0010\t\u001a\u00020\n\u0012\u000e\b\u0002\u0010\u000b\u001a\b\u0012\u0004\u0012\u00020\r0\f\u0012\u000e\b\u0002\u0010\u000e\u001a\b\u0012\u0004\u0012\u00020\u000f0\\u0006\u0002\u0010\u0010J\u0010\u0010\u0011\u001a\u00020\n2\u0006\u0010\u0012\u001a\u00020\u0013H\u0002J,\u0010\u0014\u001a\u00020\u00152\b\u0010\u0016\u001a\u0004\u0018\u00010\u00172\u0006\u0010\u0018\u001a\u00020\u00192\b\u0010\u001a\u001a\u0004\u0018\u00010\u001b2\u0006\u0010\u001c\u001a\u00020\nH\u0002J\u0010\u0010\u001d\u001a\u00020\u001b2\u0006\u0010\u001e\u001a\u00020\u001fH\u0016J)\u0010 \u001a\u00020\u00152\u0006\u0010\u0018\u001a\u00020\u00192\b\u0010!\u001a\u0004\u0018\u00010\u00132\b\u0010\u001a\u001a\u0004\u0018\u00010\u001bH\u0002¢\u0006\u0002\u0010\"J\u0018\u0010#\u001a\u00020\n2\u0006\u0010\u0018\u001a\u00020\u00192\u0006\u0010\u001a\u001a\u00020\u001bH\u0002J'\u0010$\u001a\u00020\u0015*\u0004\u0018\u00010%2\u0012\u0010&\u001a\u000e\u0012\u0004\u0012\u00020%\u0012\u0004\u0012\u00020\u00150'H\u0002¢\u0006\u0002\u0010(R\u0010\u0010\u0006\u001a\u0004\u0018\u00010\u0007X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\t\u001a\u00020\nX\u0082\u0004¢\u0006\u0002\n\u0000R\u0014\u0010\u000b\u001a\b\u0012\u0004\u0012\u00020\r0\fX\u0082\u0004¢\u0006\u0002\n\u0000R\u0014\u0010\u000e\u001a\b\u0012\u0004\u0012\u00020\u000f0\fX\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u0003\u001a\u00020\u0004X\u0082\u0004¢\u0006\u0002\n\u0000¨\u0006*"}, d2 = {"Lio/sentry/okhttp/SentryOkHttpInterceptor;", "Lokhttp3/Interceptor;", "()V", "hub", "Lio/sentry/IHub;", "(Lio/sentry/IHub;)V", "beforeSpan", "Lio/sentry/okhttp/SentryOkHttpInterceptor$BeforeSpanCallback;", "(Lio/sentry/okhttp/SentryOkHttpInterceptor$BeforeSpanCallback;)V", "captureFailedRequests", "", "failedRequestStatusCodes", "", "Lio/sentry/HttpStatusCodeRange;", "failedRequestTargets", "", "(Lio/sentry/IHub;Lio/sentry/okhttp/SentryOkHttpInterceptor$BeforeSpanCallback;ZLjava/util/List;Ljava/util/List;)V", "containsStatusCode", "statusCode", "", "finishSpan", "", "span", "Lio/sentry/ISpan;", SentryBaseEvent.JsonKeys.REQUEST, "Lokhttp3/Request;", Response.TYPE, "Lokhttp3/Response;", "isFromEventListener", "intercept", "chain", "Lokhttp3/Interceptor$Chain;", "sendBreadcrumb", "code", "(Lokhttp3/Request;Ljava/lang/Integer;Lokhttp3/Response;)V", "shouldCaptureClientError", "ifHasValidLength", "", "fn", "Lkotlin/Function1;", "(Ljava/lang/Long;Lkotlin/jvm/functions/Function1;)V", "BeforeSpanCallback", "sentry-okhttp"}, k = 1, mv = {1, 8, 0}, xi = 48)
/* loaded from: classes3.dex */
public class SentryOkHttpInterceptor implements Interceptor {
private final BeforeSpanCallback beforeSpan;
private final boolean captureFailedRequests;
private final List<HttpStatusCodeRange> failedRequestStatusCodes;
private final List<String> failedRequestTargets;
private final IHub hub;
/* compiled from: SentryOkHttpInterceptor.kt */
@Metadata(d1 = {"\u0000\u001e\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\\u0080\u0001\u0018\u00002\u00020\u0001J$\u0010\u0002\u001a\u0004\u0018\u00010\u00032\u0006\u0010\u0004\u001a\u00020\u00032\u0006\u0010\u0005\u001a\u00020\u00062\b\u0010\u0007\u001a\u0004\u0018\u00010\bH&¨\u0006\t"}, d2 = {"Lio/sentry/okhttp/SentryOkHttpInterceptor$BeforeSpanCallback;", "", "execute", "Lio/sentry/ISpan;", "span", SentryBaseEvent.JsonKeys.REQUEST, "Lokhttp3/Request;", Response.TYPE, "Lokhttp3/Response;", "sentry-okhttp"}, k = 1, mv = {1, 8, 0}, xi = 48)
/* loaded from: classes3.dex */
public interface BeforeSpanCallback {
ISpan execute(ISpan span, Request request, okhttp3.Response response);
}
public SentryOkHttpInterceptor(IHub hub, BeforeSpanCallback beforeSpanCallback, boolean z, List<HttpStatusCodeRange> failedRequestStatusCodes, List<String> failedRequestTargets) {
Intrinsics.checkNotNullParameter(hub, "hub");
Intrinsics.checkNotNullParameter(failedRequestStatusCodes, "failedRequestStatusCodes");
Intrinsics.checkNotNullParameter(failedRequestTargets, "failedRequestTargets");
this.hub = hub;
this.beforeSpan = beforeSpanCallback;
this.captureFailedRequests = z;
this.failedRequestStatusCodes = failedRequestStatusCodes;
this.failedRequestTargets = failedRequestTargets;
IntegrationUtils.addIntegrationToSdkVersion(getClass());
SentryIntegrationPackageStorage.getInstance().addPackage("maven:io.sentry:sentry-okhttp", "7.4.0");
}
/* JADX WARN: Illegal instructions before constructor call */
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public /* synthetic */ SentryOkHttpInterceptor(io.sentry.IHub r4, io.sentry.okhttp.SentryOkHttpInterceptor.BeforeSpanCallback r5, boolean r6, java.util.List r7, java.util.List r8, int r9, kotlin.jvm.internal.DefaultConstructorMarker r10) {
/*
r3 = this;
r10 = r9 & 1
if (r10 == 0) goto Lf
io.sentry.HubAdapter r4 = io.sentry.HubAdapter.getInstance()
java.lang.String r10 = "getInstance()"
kotlin.jvm.internal.Intrinsics.checkNotNullExpressionValue(r4, r10)
io.sentry.IHub r4 = (io.sentry.IHub) r4
Lf:
r10 = r9 & 2
if (r10 == 0) goto L14
r5 = 0
L14:
r10 = r5
r5 = r9 & 4
if (r5 == 0) goto L1a
r6 = 1
L1a:
r0 = r6
r5 = r9 & 8
if (r5 == 0) goto L2c
io.sentry.HttpStatusCodeRange r5 = new io.sentry.HttpStatusCodeRange
r6 = 500(0x1f4, float:7.0E-43)
r7 = 599(0x257, float:8.4E-43)
r5.<init>(r6, r7)
java.util.List r7 = kotlin.collections.CollectionsKt.listOf(r5)
L2c:
r1 = r7
r5 = r9 & 16
if (r5 == 0) goto L37
java.lang.String r5 = ".*"
java.util.List r8 = kotlin.collections.CollectionsKt.listOf(r5)
L37:
r2 = r8
r5 = r3
r6 = r4
r7 = r10
r8 = r0
r9 = r1
r10 = r2
r5.<init>(r6, r7, r8, r9, r10)
return
*/
throw new UnsupportedOperationException("Method not decompiled: io.sentry.okhttp.SentryOkHttpInterceptor.<init>(io.sentry.IHub, io.sentry.okhttp.SentryOkHttpInterceptor$BeforeSpanCallback, boolean, java.util.List, java.util.List, int, kotlin.jvm.internal.DefaultConstructorMarker):void");
}
/* JADX WARN: Illegal instructions before constructor call */
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public SentryOkHttpInterceptor() {
/*
r2 = this;
io.sentry.HubAdapter r0 = io.sentry.HubAdapter.getInstance()
java.lang.String r1 = "getInstance()"
kotlin.jvm.internal.Intrinsics.checkNotNullExpressionValue(r0, r1)
io.sentry.IHub r0 = (io.sentry.IHub) r0
r2.<init>(r0)
return
*/
throw new UnsupportedOperationException("Method not decompiled: io.sentry.okhttp.SentryOkHttpInterceptor.<init>():void");
}
/* JADX WARN: 'this' call moved to the top of the method (can break code semantics) */
public SentryOkHttpInterceptor(IHub hub) {
this(hub, null, false, null, null, 28, null);
Intrinsics.checkNotNullParameter(hub, "hub");
}
/* JADX WARN: Illegal instructions before constructor call */
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public SentryOkHttpInterceptor(io.sentry.okhttp.SentryOkHttpInterceptor.BeforeSpanCallback r11) {
/*
r10 = this;
java.lang.String r0 = "beforeSpan"
kotlin.jvm.internal.Intrinsics.checkNotNullParameter(r11, r0)
io.sentry.HubAdapter r0 = io.sentry.HubAdapter.getInstance()
java.lang.String r1 = "getInstance()"
kotlin.jvm.internal.Intrinsics.checkNotNullExpressionValue(r0, r1)
r3 = r0
io.sentry.IHub r3 = (io.sentry.IHub) r3
r5 = 0
r6 = 0
r7 = 0
r8 = 28
r9 = 0
r2 = r10
r4 = r11
r2.<init>(r3, r4, r5, r6, r7, r8, r9)
return
*/
throw new UnsupportedOperationException("Method not decompiled: io.sentry.okhttp.SentryOkHttpInterceptor.<init>(io.sentry.okhttp.SentryOkHttpInterceptor$BeforeSpanCallback):void");
}
/* JADX WARN: Removed duplicated region for block: B:48:0x0160 */
/* JADX WARN: Removed duplicated region for block: B:50:? A[SYNTHETIC] */
@Override // okhttp3.Interceptor
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public okhttp3.Response intercept(okhttp3.Interceptor.Chain r13) {
/*
Method dump skipped, instructions count: 356
To view this dump add '--comments-level debug' option
*/
throw new UnsupportedOperationException("Method not decompiled: io.sentry.okhttp.SentryOkHttpInterceptor.intercept(okhttp3.Interceptor$Chain):okhttp3.Response");
}
private final void sendBreadcrumb(Request request, Integer code, okhttp3.Response response) {
final Breadcrumb http = Breadcrumb.http(request.url().getUrl(), request.method(), code);
Intrinsics.checkNotNullExpressionValue(http, "http(request.url.toString(), request.method, code)");
RequestBody body = request.body();
ifHasValidLength(body != null ? Long.valueOf(body.contentLength()) : null, new Function1<Long, Unit>() { // from class: io.sentry.okhttp.SentryOkHttpInterceptor$sendBreadcrumb$1
/* JADX INFO: Access modifiers changed from: package-private */
{
super(1);
}
@Override // kotlin.jvm.functions.Function1
public /* bridge */ /* synthetic */ Unit invoke(Long l) {
invoke(l.longValue());
return Unit.INSTANCE;
}
public final void invoke(long j) {
Breadcrumb.this.setData("http.request_content_length", Long.valueOf(j));
}
});
Hint hint = new Hint();
hint.set(TypeCheckHint.OKHTTP_REQUEST, request);
if (response != null) {
ResponseBody body2 = response.body();
ifHasValidLength(body2 != null ? Long.valueOf(body2.getContentLength()) : null, new Function1<Long, Unit>() { // from class: io.sentry.okhttp.SentryOkHttpInterceptor$sendBreadcrumb$2$1
/* JADX INFO: Access modifiers changed from: package-private */
{
super(1);
}
@Override // kotlin.jvm.functions.Function1
public /* bridge */ /* synthetic */ Unit invoke(Long l) {
invoke(l.longValue());
return Unit.INSTANCE;
}
public final void invoke(long j) {
Breadcrumb.this.setData(SpanDataConvention.HTTP_RESPONSE_CONTENT_LENGTH_KEY, Long.valueOf(j));
}
});
hint.set(TypeCheckHint.OKHTTP_RESPONSE, response);
}
this.hub.addBreadcrumb(http, hint);
}
private final void finishSpan(ISpan span, Request request, okhttp3.Response response, boolean isFromEventListener) {
if (span == null) {
return;
}
BeforeSpanCallback beforeSpanCallback = this.beforeSpan;
if (beforeSpanCallback == null) {
if (isFromEventListener) {
return;
}
span.finish();
} else {
if (beforeSpanCallback.execute(span, request, response) == null) {
span.getSpanContext().setSampled(false);
}
if (isFromEventListener) {
return;
}
span.finish();
}
}
private final void ifHasValidLength(Long l, Function1<? super Long, Unit> function1) {
if (l == null || l.longValue() == -1) {
return;
}
function1.invoke(l);
}
private final boolean shouldCaptureClientError(Request request, okhttp3.Response response) {
return this.captureFailedRequests && containsStatusCode(response.code()) && PropagationTargetsUtils.contain(this.failedRequestTargets, request.url().getUrl());
}
private final boolean containsStatusCode(int statusCode) {
Iterator<HttpStatusCodeRange> it = this.failedRequestStatusCodes.iterator();
while (it.hasNext()) {
if (it.next().isInRange(statusCode)) {
return true;
}
}
return false;
}
}