package com.vungle.warren.network; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import okhttp3.Headers; import okhttp3.Protocol; import okhttp3.Request; import okhttp3.Response; import okhttp3.ResponseBody; public final class Response<T> { @Nullable private final T body; @Nullable private final ResponseBody errorBody; private final okhttp3.Response rawResponse; private Response(okhttp3.Response response, @Nullable T t10, @Nullable ResponseBody responseBody) { this.rawResponse = response; this.body = t10; this.errorBody = responseBody; } public static <T> Response<T> error(int i10, ResponseBody responseBody) { if (i10 >= 400) { return error(responseBody, new Response.Builder().g(i10).m("Response.error()").p(Protocol.HTTP_1_1).r(new Request.Builder().p("http://localhost/").b()).c()); } throw new IllegalArgumentException("code < 400: " + i10); } public static <T> Response<T> error(@NonNull ResponseBody responseBody, @NonNull okhttp3.Response response) { if (!response.z()) { return new Response<>(response, null, responseBody); } throw new IllegalArgumentException("rawResponse should not be successful response"); } public static <T> Response<T> success(@Nullable T t10) { return success(t10, new Response.Builder().g(200).m("OK").p(Protocol.HTTP_1_1).r(new Request.Builder().p("http://localhost/").b()).c()); } public static <T> Response<T> success(@Nullable T t10, @NonNull okhttp3.Response response) { if (response.z()) { return new Response<>(response, t10, null); } throw new IllegalArgumentException("rawResponse must be successful response"); } @Nullable public T body() { return this.body; } public int code() { return this.rawResponse.p(); } @Nullable public ResponseBody errorBody() { return this.errorBody; } public Headers headers() { return this.rawResponse.x(); } public boolean isSuccessful() { return this.rawResponse.z(); } public String message() { return this.rawResponse.A(); } public okhttp3.Response raw() { return this.rawResponse; } public String toString() { return this.rawResponse.toString(); } }