- Added realracing3-community.apk (71.57 MB) - Removed 32-bit support (armeabi-v7a) - Only includes arm64-v8a libraries - Decompiled source code included - Added README-community.md with analysis
89 lines
3.7 KiB
Java
89 lines
3.7 KiB
Java
package okhttp3.internal.http;
|
|
|
|
import java.net.ProtocolException;
|
|
import okhttp3.Interceptor;
|
|
import okhttp3.Request;
|
|
import okhttp3.Response;
|
|
import okhttp3.internal.Util;
|
|
import okhttp3.internal.connection.Exchange;
|
|
import okio.BufferedSink;
|
|
import okio.Okio;
|
|
import org.apache.http.protocol.HTTP;
|
|
|
|
/* loaded from: classes5.dex */
|
|
public final class CallServerInterceptor implements Interceptor {
|
|
public final boolean forWebSocket;
|
|
|
|
public CallServerInterceptor(boolean z) {
|
|
this.forWebSocket = z;
|
|
}
|
|
|
|
@Override // okhttp3.Interceptor
|
|
public Response intercept(Interceptor.Chain chain) {
|
|
boolean z;
|
|
Response build;
|
|
RealInterceptorChain realInterceptorChain = (RealInterceptorChain) chain;
|
|
Exchange exchange = realInterceptorChain.exchange();
|
|
Request request = realInterceptorChain.request();
|
|
long currentTimeMillis = System.currentTimeMillis();
|
|
exchange.writeRequestHeaders(request);
|
|
Response.Builder builder = null;
|
|
if (HttpMethod.permitsRequestBody(request.method()) && request.body() != null) {
|
|
if (HTTP.EXPECT_CONTINUE.equalsIgnoreCase(request.header(HTTP.EXPECT_DIRECTIVE))) {
|
|
exchange.flushRequest();
|
|
exchange.responseHeadersStart();
|
|
builder = exchange.readResponseHeaders(true);
|
|
z = true;
|
|
} else {
|
|
z = false;
|
|
}
|
|
if (builder == null) {
|
|
if (request.body().isDuplex()) {
|
|
exchange.flushRequest();
|
|
request.body().writeTo(Okio.buffer(exchange.createRequestBody(request, true)));
|
|
} else {
|
|
BufferedSink buffer = Okio.buffer(exchange.createRequestBody(request, false));
|
|
request.body().writeTo(buffer);
|
|
buffer.close();
|
|
}
|
|
} else {
|
|
exchange.noRequestBody();
|
|
if (!exchange.connection().isMultiplexed()) {
|
|
exchange.noNewExchangesOnConnection();
|
|
}
|
|
}
|
|
} else {
|
|
exchange.noRequestBody();
|
|
z = false;
|
|
}
|
|
if (request.body() == null || !request.body().isDuplex()) {
|
|
exchange.finishRequest();
|
|
}
|
|
if (!z) {
|
|
exchange.responseHeadersStart();
|
|
}
|
|
if (builder == null) {
|
|
builder = exchange.readResponseHeaders(false);
|
|
}
|
|
Response build2 = builder.request(request).handshake(exchange.connection().handshake()).sentRequestAtMillis(currentTimeMillis).receivedResponseAtMillis(System.currentTimeMillis()).build();
|
|
int code = build2.code();
|
|
if (code == 100) {
|
|
build2 = exchange.readResponseHeaders(false).request(request).handshake(exchange.connection().handshake()).sentRequestAtMillis(currentTimeMillis).receivedResponseAtMillis(System.currentTimeMillis()).build();
|
|
code = build2.code();
|
|
}
|
|
exchange.responseHeadersEnd(build2);
|
|
if (this.forWebSocket && code == 101) {
|
|
build = build2.newBuilder().body(Util.EMPTY_RESPONSE).build();
|
|
} else {
|
|
build = build2.newBuilder().body(exchange.openResponseBody(build2)).build();
|
|
}
|
|
if ("close".equalsIgnoreCase(build.request().header(HTTP.CONN_DIRECTIVE)) || "close".equalsIgnoreCase(build.header(HTTP.CONN_DIRECTIVE))) {
|
|
exchange.noNewExchangesOnConnection();
|
|
}
|
|
if ((code != 204 && code != 205) || build.body().contentLength() <= 0) {
|
|
return build;
|
|
}
|
|
throw new ProtocolException("HTTP " + code + " had non-zero Content-Length: " + build.body().contentLength());
|
|
}
|
|
}
|