package com.qianwen.core.http;
|
|
import com.fasterxml.jackson.core.type.TypeReference;
|
import com.fasterxml.jackson.databind.JsonNode;
|
import java.io.Closeable;
|
import java.io.File;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.nio.file.CopyOption;
|
import java.nio.file.Files;
|
import java.nio.file.Path;
|
import java.util.List;
|
import java.util.Map;
|
import javax.annotation.Nullable;
|
import okhttp3.Cookie;
|
import okhttp3.Headers;
|
import okhttp3.MediaType;
|
import okhttp3.Request;
|
import okhttp3.Response;
|
import okhttp3.ResponseBody;
|
import okhttp3.internal.Util;
|
import com.qianwen.core.tool.jackson.JsonUtil;
|
import com.qianwen.core.tool.utils.Exceptions;
|
|
/* loaded from: blade-starter-http-9.3.0.0-SNAPSHOT.jar:org/springblade/core/http/HttpResponse.class */
|
public class HttpResponse implements ResponseSpec, Closeable {
|
private final Request request;
|
private final Response response;
|
private final ResponseBody body;
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
public HttpResponse(final Response response) {
|
this.request = response.request();
|
this.response = response;
|
this.body = ifNullBodyToEmpty(response.body());
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public int code() {
|
return this.response.code();
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public String message() {
|
return this.response.message();
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public boolean isOk() {
|
return this.response.isSuccessful();
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public boolean isRedirect() {
|
return this.response.isRedirect();
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public Headers headers() {
|
return this.response.headers();
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public List<Cookie> cookies() {
|
return Cookie.parseAll(this.request.url(), headers());
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public Request rawRequest() {
|
return this.request;
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public Response rawResponse() {
|
return this.response;
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public ResponseBody rawBody() {
|
return this.body;
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public String asString() {
|
try {
|
return this.body.string();
|
} catch (IOException e) {
|
throw Exceptions.unchecked(e);
|
}
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public byte[] asBytes() {
|
try {
|
return this.body.bytes();
|
} catch (IOException e) {
|
throw Exceptions.unchecked(e);
|
}
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public InputStream asStream() {
|
return this.body.byteStream();
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public JsonNode asJsonNode() {
|
return JsonUtil.readTree(asBytes());
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public <T> T asValue(Class<T> valueType) {
|
return (T) JsonUtil.readValue(asBytes(), valueType);
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public <T> T asValue(TypeReference<T> typeReference) {
|
return (T) JsonUtil.readValue(asBytes(), typeReference);
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public <T> List<T> asList(Class<T> valueType) {
|
return JsonUtil.readList(asBytes(), valueType);
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public <K, V> Map<K, V> asMap(Class<?> keyClass, Class<?> valueType) {
|
return JsonUtil.readMap(asBytes(), keyClass, valueType);
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public <V> Map<String, V> asMap(Class<?> valueType) {
|
return asMap(String.class, valueType);
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public <T> T asDomValue(Class<T> valueType) {
|
return (T) DomMapper.readValue(asStream(), valueType);
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public <T> List<T> asDomList(Class<T> valueType) {
|
return DomMapper.readList(asStream(), valueType);
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public File toFile(File file) {
|
toFile(file.toPath());
|
return file;
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public Path toFile(Path path) {
|
try {
|
Files.copy(asStream(), path, new CopyOption[0]);
|
return path;
|
} catch (IOException e) {
|
throw Exceptions.unchecked(e);
|
}
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public MediaType contentType() {
|
return this.body.contentType();
|
}
|
|
@Override // org.springblade.core.http.ResponseSpec
|
public long contentLength() {
|
return this.body.contentLength();
|
}
|
|
public String toString() {
|
return this.response.toString();
|
}
|
|
private static ResponseBody ifNullBodyToEmpty(@Nullable ResponseBody body) {
|
return body == null ? Util.EMPTY_RESPONSE : body;
|
}
|
|
@Override // java.io.Closeable, java.lang.AutoCloseable
|
public void close() throws IOException {
|
Util.closeQuietly(this.body);
|
}
|
}
|