jimu-decompiled/sources/retrofit2/OkHttpCall.java
2025-05-13 19:24:51 +02:00

295 lines
9.5 KiB
Java

package retrofit2;
import java.io.IOException;
import okhttp3.MediaType;
import okhttp3.Request;
import okhttp3.ResponseBody;
import okio.Buffer;
import okio.BufferedSource;
import okio.ForwardingSource;
import okio.Okio;
/* loaded from: classes2.dex */
final class OkHttpCall<T> implements Call<T> {
private final Object[] args;
private volatile boolean canceled;
private Throwable creationFailure;
private boolean executed;
private okhttp3.Call rawCall;
private final ServiceMethod<T, ?> serviceMethod;
static final class ExceptionCatchingRequestBody extends ResponseBody {
private final ResponseBody delegate;
IOException thrownException;
ExceptionCatchingRequestBody(ResponseBody responseBody) {
this.delegate = responseBody;
}
@Override // okhttp3.ResponseBody, java.io.Closeable, java.lang.AutoCloseable
public void close() {
this.delegate.close();
}
@Override // okhttp3.ResponseBody
public long contentLength() {
return this.delegate.contentLength();
}
@Override // okhttp3.ResponseBody
public MediaType contentType() {
return this.delegate.contentType();
}
@Override // okhttp3.ResponseBody
public BufferedSource source() {
return Okio.buffer(new ForwardingSource(this.delegate.source()) { // from class: retrofit2.OkHttpCall.ExceptionCatchingRequestBody.1
@Override // okio.ForwardingSource, okio.Source
public long read(Buffer buffer, long j) throws IOException {
try {
return super.read(buffer, j);
} catch (IOException e) {
ExceptionCatchingRequestBody.this.thrownException = e;
throw e;
}
}
});
}
void throwIfCaught() throws IOException {
IOException iOException = this.thrownException;
if (iOException != null) {
throw iOException;
}
}
}
static final class NoContentResponseBody extends ResponseBody {
private final long contentLength;
private final MediaType contentType;
NoContentResponseBody(MediaType mediaType, long j) {
this.contentType = mediaType;
this.contentLength = j;
}
@Override // okhttp3.ResponseBody
public long contentLength() {
return this.contentLength;
}
@Override // okhttp3.ResponseBody
public MediaType contentType() {
return this.contentType;
}
@Override // okhttp3.ResponseBody
public BufferedSource source() {
throw new IllegalStateException("Cannot read raw response body of a converted body.");
}
}
OkHttpCall(ServiceMethod<T, ?> serviceMethod, Object[] objArr) {
this.serviceMethod = serviceMethod;
this.args = objArr;
}
private okhttp3.Call createRawCall() throws IOException {
okhttp3.Call call = this.serviceMethod.toCall(this.args);
if (call != null) {
return call;
}
throw new NullPointerException("Call.Factory returned null.");
}
@Override // retrofit2.Call
public void cancel() {
okhttp3.Call call;
this.canceled = true;
synchronized (this) {
call = this.rawCall;
}
if (call != null) {
call.cancel();
}
}
@Override // retrofit2.Call
public void enqueue(final Callback<T> callback) {
okhttp3.Call call;
Throwable th;
Utils.checkNotNull(callback, "callback == null");
synchronized (this) {
if (this.executed) {
throw new IllegalStateException("Already executed.");
}
this.executed = true;
call = this.rawCall;
th = this.creationFailure;
if (call == null && th == null) {
try {
okhttp3.Call createRawCall = createRawCall();
this.rawCall = createRawCall;
call = createRawCall;
} catch (Throwable th2) {
th = th2;
Utils.throwIfFatal(th);
this.creationFailure = th;
}
}
}
if (th != null) {
callback.onFailure(this, th);
return;
}
if (this.canceled) {
call.cancel();
}
call.enqueue(new okhttp3.Callback() { // from class: retrofit2.OkHttpCall.1
private void callFailure(Throwable th3) {
try {
callback.onFailure(OkHttpCall.this, th3);
} catch (Throwable th4) {
th4.printStackTrace();
}
}
@Override // okhttp3.Callback
public void onFailure(okhttp3.Call call2, IOException iOException) {
callFailure(iOException);
}
@Override // okhttp3.Callback
public void onResponse(okhttp3.Call call2, okhttp3.Response response) {
try {
try {
callback.onResponse(OkHttpCall.this, OkHttpCall.this.parseResponse(response));
} catch (Throwable th3) {
th3.printStackTrace();
}
} catch (Throwable th4) {
callFailure(th4);
}
}
});
}
@Override // retrofit2.Call
public Response<T> execute() throws IOException {
okhttp3.Call call;
synchronized (this) {
if (this.executed) {
throw new IllegalStateException("Already executed.");
}
this.executed = true;
if (this.creationFailure != null) {
if (this.creationFailure instanceof IOException) {
throw ((IOException) this.creationFailure);
}
if (this.creationFailure instanceof RuntimeException) {
throw ((RuntimeException) this.creationFailure);
}
throw ((Error) this.creationFailure);
}
call = this.rawCall;
if (call == null) {
try {
call = createRawCall();
this.rawCall = call;
} catch (IOException | Error | RuntimeException e) {
Utils.throwIfFatal(e);
this.creationFailure = e;
throw e;
}
}
}
if (this.canceled) {
call.cancel();
}
return parseResponse(call.execute());
}
@Override // retrofit2.Call
public boolean isCanceled() {
boolean z = true;
if (this.canceled) {
return true;
}
synchronized (this) {
if (this.rawCall == null || !this.rawCall.isCanceled()) {
z = false;
}
}
return z;
}
@Override // retrofit2.Call
public synchronized boolean isExecuted() {
return this.executed;
}
Response<T> parseResponse(okhttp3.Response response) throws IOException {
ResponseBody body = response.body();
okhttp3.Response build = response.newBuilder().body(new NoContentResponseBody(body.contentType(), body.contentLength())).build();
int code = build.code();
if (code < 200 || code >= 300) {
try {
return Response.error(Utils.buffer(body), build);
} finally {
body.close();
}
}
if (code == 204 || code == 205) {
body.close();
return Response.success((Object) null, build);
}
ExceptionCatchingRequestBody exceptionCatchingRequestBody = new ExceptionCatchingRequestBody(body);
try {
return Response.success(this.serviceMethod.toResponse(exceptionCatchingRequestBody), build);
} catch (RuntimeException e) {
exceptionCatchingRequestBody.throwIfCaught();
throw e;
}
}
@Override // retrofit2.Call
public synchronized Request request() {
okhttp3.Call call = this.rawCall;
if (call != null) {
return call.request();
}
if (this.creationFailure != null) {
if (this.creationFailure instanceof IOException) {
throw new RuntimeException("Unable to create request.", this.creationFailure);
}
if (this.creationFailure instanceof RuntimeException) {
throw ((RuntimeException) this.creationFailure);
}
throw ((Error) this.creationFailure);
}
try {
okhttp3.Call createRawCall = createRawCall();
this.rawCall = createRawCall;
return createRawCall.request();
} catch (IOException e) {
this.creationFailure = e;
throw new RuntimeException("Unable to create request.", e);
} catch (Error e2) {
e = e2;
Utils.throwIfFatal(e);
this.creationFailure = e;
throw e;
} catch (RuntimeException e3) {
e = e3;
Utils.throwIfFatal(e);
this.creationFailure = e;
throw e;
}
}
@Override // retrofit2.Call
public OkHttpCall<T> clone() {
return new OkHttpCall<>(this.serviceMethod, this.args);
}
}