From 80b6cbfc9c861469146318d0b3dd5f8b8b525b8a Mon Sep 17 00:00:00 2001 From: xiejun <xiejun@vci-tech.com> Date: 星期五, 01 十一月 2024 15:11:19 +0800 Subject: [PATCH] Revert "集成获取mdm分发通用数据格式接口集成" --- Source/BladeX-Tool/blade-starter-http/src/main/java/org/springblade/core/http/HttpResponse.java | 199 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 199 insertions(+), 0 deletions(-) diff --git a/Source/BladeX-Tool/blade-starter-http/src/main/java/org/springblade/core/http/HttpResponse.java b/Source/BladeX-Tool/blade-starter-http/src/main/java/org/springblade/core/http/HttpResponse.java new file mode 100644 index 0000000..5396bb1 --- /dev/null +++ b/Source/BladeX-Tool/blade-starter-http/src/main/java/org/springblade/core/http/HttpResponse.java @@ -0,0 +1,199 @@ +/* + * Copyright (c) 2018-2028, DreamLu All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the dreamlu.net developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: DreamLu 鍗㈡槬姊� (596392912@qq.com) + */ +package org.springblade.core.http; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.JsonNode; +import okhttp3.*; +import okhttp3.internal.Util; +import org.springblade.core.tool.jackson.JsonUtil; +import org.springblade.core.tool.utils.Exceptions; + +import javax.annotation.Nullable; +import java.io.Closeable; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; +import java.util.Map; + +/** + * ok http 灏佽锛岀浉搴旂粨鏋勪綋 + * + * @author L.cm + */ +public class HttpResponse implements ResponseSpec, Closeable { + private final Request request; + private final Response response; + private final ResponseBody body; + + HttpResponse(final Response response) { + this.request = response.request(); + this.response = response; + this.body = ifNullBodyToEmpty(response.body()); + } + + @Override + public int code() { + return response.code(); + } + + @Override + public String message() { + return response.message(); + } + + @Override + public boolean isOk() { + return response.isSuccessful(); + } + + @Override + public boolean isRedirect() { + return response.isRedirect(); + } + + @Override + public Headers headers() { + return response.headers(); + } + + @Override + public List<Cookie> cookies() { + return Cookie.parseAll(request.url(), this.headers()); + } + + @Override + public Request rawRequest() { + return this.request; + } + + @Override + public Response rawResponse() { + return this.response; + } + + @Override + public ResponseBody rawBody() { + return this.body; + } + + @Override + public String asString() { + try { + return body.string(); + } catch (IOException e) { + throw Exceptions.unchecked(e); + } + } + + @Override + public byte[] asBytes() { + try { + return body.bytes(); + } catch (IOException e) { + throw Exceptions.unchecked(e); + } + } + + @Override + public InputStream asStream() { + return body.byteStream(); + } + + @Override + public JsonNode asJsonNode() { + return JsonUtil.readTree(asBytes()); + } + + @Override + public <T> T asValue(Class<T> valueType) { + return JsonUtil.readValue(asBytes(), valueType); + } + + @Override + public <T> T asValue(TypeReference<T> typeReference) { + return JsonUtil.readValue(asBytes(), typeReference); + } + + @Override + public <T> List<T> asList(Class<T> valueType) { + return JsonUtil.readList(asBytes(), valueType); + } + + @Override + public <K, V> Map<K, V> asMap(Class<?> keyClass, Class<?> valueType) { + return JsonUtil.readMap(asBytes(), keyClass, valueType); + } + + @Override + public <V> Map<String, V> asMap(Class<?> valueType) { + return this.asMap(String.class, valueType); + } + + @Override + public <T> T asDomValue(Class<T> valueType) { + return DomMapper.readValue(this.asStream(), valueType); + } + + @Override + public <T> List<T> asDomList(Class<T> valueType) { + return DomMapper.readList(this.asStream(), valueType); + } + + @Override + public File toFile(File file) { + toFile(file.toPath()); + return file; + } + + @Override + public Path toFile(Path path) { + try { + Files.copy(this.asStream(), path); + return path; + } catch (IOException e) { + throw Exceptions.unchecked(e); + } + } + + @Override + public MediaType contentType() { + return body.contentType(); + } + + @Override + public long contentLength() { + return body.contentLength(); + } + + @Override + public String toString() { + return response.toString(); + } + + private static ResponseBody ifNullBodyToEmpty(@Nullable ResponseBody body) { + return body == null ? Util.EMPTY_RESPONSE : body; + } + + @Override + public void close() throws IOException { + Util.closeQuietly(this.body); + } +} -- Gitblit v1.9.3