From 882d20c30cb094aefeceaa5fb2a9cc54a1ed5ef3 Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Thu, 6 Jul 2023 15:38:37 +0800 Subject: [PATCH] optimize some code --- src/main/java/com/qiniu/http/Response.java | 12 +----- src/main/java/com/qiniu/storage/Api.java | 41 ++++++++++--------- .../java/com/qiniu/storage/AutoRegion.java | 8 +--- .../java/com/qiniu/util/DefaultHeader.java | 2 +- src/main/java/com/qiniu/util/Timestamp.java | 2 +- 5 files changed, 27 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/qiniu/http/Response.java b/src/main/java/com/qiniu/http/Response.java index 582d9c8d5..9461f9fec 100644 --- a/src/main/java/com/qiniu/http/Response.java +++ b/src/main/java/com/qiniu/http/Response.java @@ -214,22 +214,14 @@ public StringMap jsonToMap() throws QiniuException { if (!isJson()) { return null; } - String b = bodyString(); - if (b == null || !b.startsWith("{")) { - return null; - } - return Json.decode(b); + return Json.decode(bodyString()); } public Object[] jsonToArray() throws QiniuException { if (!isJson()) { return null; } - String b = bodyString(); - if (b == null || !b.startsWith("[")) { - return null; - } - return Json.decodeArray(b); + return Json.decodeArray(bodyString()); } public synchronized byte[] body() throws QiniuException { diff --git a/src/main/java/com/qiniu/storage/Api.java b/src/main/java/com/qiniu/storage/Api.java index 260a048db..eb99dddd3 100644 --- a/src/main/java/com/qiniu/storage/Api.java +++ b/src/main/java/com/qiniu/storage/Api.java @@ -5,10 +5,12 @@ import com.qiniu.http.MethodType; import com.qiniu.http.RequestStreamBody; import com.qiniu.util.Auth; +import com.qiniu.util.Json; import com.qiniu.util.StringMap; import com.qiniu.util.StringUtils; import okhttp3.MediaType; import okhttp3.MultipartBody; +import okhttp3.Request; import okhttp3.RequestBody; import okio.BufferedSink; @@ -115,19 +117,14 @@ protected com.qiniu.http.Response innerRequest(Request request) throws QiniuExce MethodType method = request.getMethod(); String url = request.getUrl().toString(); StringMap header = request.getHeader(); - if (method == MethodType.GET) { - return client.get(url, header); - } else if (method == MethodType.POST) { - return client.post(url, request.getRequestBody(), header); - } else if (method == MethodType.PUT) { - return client.put(url, request.getRequestBody(), header); - } else if (method == MethodType.DELETE) { - return client.delete(url, request.getRequestBody(), header); - } else if (method == MethodType.HEAD) { - return client.head(url, header); - } else { - throw QiniuException.unrecoverable("暂不支持这种请求方式"); + RequestBody body = null; + if (method.hasContent()) { + body = request.getRequestBody(); } + okhttp3.Request.Builder requestBuilder = new okhttp3.Request.Builder() + .url(url) + .method(method.toString(), body); + return client.send(requestBuilder, header); } protected com.qiniu.http.Response requestByClient(Request request) throws QiniuException { @@ -760,9 +757,11 @@ private RequestBody getRequestBody() { if (!hasBody()) { return Body.BytesBody.empty().get(); } + if (body instanceof Body.InputStreamBody) { ((Body.InputStreamBody) body).streamBodySinkSize = streamBodySinkSize; } + return body.get(); } @@ -915,7 +914,7 @@ public boolean equals(Object o) { } } - public abstract static class Body { + private abstract static class Body { protected final MediaType contentType; @@ -1091,17 +1090,21 @@ public static class Response { * @throws QiniuException 解析 data 异常 */ protected Response(com.qiniu.http.Response response) throws QiniuException { - try { - this.dataMap = response.jsonToMap(); - } catch (Exception e) { - e.printStackTrace(); + this.response = response; + if (response == null) { + return; } + + String bodyString = response.bodyString(); try { - this.dataArray = response.jsonToArray(); + if (bodyString.startsWith("[")) { + this.dataArray = Json.decodeArray(bodyString); + } else { + this.dataMap = Json.decode(bodyString); + } } catch (Exception e) { e.printStackTrace(); } - this.response = response; } /** diff --git a/src/main/java/com/qiniu/storage/AutoRegion.java b/src/main/java/com/qiniu/storage/AutoRegion.java index 4f8592224..e5ac7325a 100644 --- a/src/main/java/com/qiniu/storage/AutoRegion.java +++ b/src/main/java/com/qiniu/storage/AutoRegion.java @@ -55,13 +55,7 @@ private AutoRegion() { } AutoRegion(String... ucServers) { - if (ucServers != null && ucServers.length > 0) { - this.ucServers = Arrays.asList(ucServers); - } else { - this.ucServers = Arrays.asList(Configuration.defaultUcHosts); - } - this.client = new Client(); - this.regions = new ConcurrentHashMap<>(); + this(1, 300, 600 * 1000, ucServers); } AutoRegion(int retryMax, int retryInterval, int hostFreezeDuration, String... ucServers) { diff --git a/src/main/java/com/qiniu/util/DefaultHeader.java b/src/main/java/com/qiniu/util/DefaultHeader.java index cbb7174ac..cf9f4c4a1 100644 --- a/src/main/java/com/qiniu/util/DefaultHeader.java +++ b/src/main/java/com/qiniu/util/DefaultHeader.java @@ -8,7 +8,7 @@ import java.util.Date; import java.util.TimeZone; -public class DefaultHeader { +public final class DefaultHeader { public static final String DISABLE_TIMESTAMP_SIGNATURE_ENV_KEY = "DISABLE_QINIU_TIMESTAMP_SIGNATURE"; public static void setDefaultHeader(HeadAdder adder) { diff --git a/src/main/java/com/qiniu/util/Timestamp.java b/src/main/java/com/qiniu/util/Timestamp.java index 4f4b6de9b..5eaa96e4f 100644 --- a/src/main/java/com/qiniu/util/Timestamp.java +++ b/src/main/java/com/qiniu/util/Timestamp.java @@ -1,6 +1,6 @@ package com.qiniu.util; -public class Timestamp { +public final class Timestamp { public static long second() { return System.currentTimeMillis() / 1000; }