Skip to content

Commit 90fabe4

Browse files
authored
Region support create by region id (#591)
1 parent 7729932 commit 90fabe4

18 files changed

+165
-36
lines changed

src/main/java/com/qiniu/http/Response.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ public synchronized InputStream bodyStream() throws QiniuException {
248248
}
249249

250250
public synchronized void close() {
251-
if (this.response != null) {
251+
if (this.response != null && this.response.body() != null) {
252252
this.response.close();
253253
}
254254
}

src/main/java/com/qiniu/storage/ApiInterceptorRetryHosts.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,10 @@ Api.Response intercept(Api.Request request, Api.Handler handler) throws QiniuExc
8484
request.setHost(newHost);
8585
}
8686

87+
if (response != null && response.getResponse() != null) {
88+
response.getResponse().close();
89+
}
90+
8791
int interval = retryInterval.interval();
8892
if (interval <= 0) {
8993
continue;

src/main/java/com/qiniu/storage/ApiInterceptorRetrySimple.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ Api.Response intercept(Api.Request request, Api.Handler handler) throws QiniuExc
5050
}
5151
request = cloneRequest;
5252

53+
if (response != null && response.getResponse() != null) {
54+
response.getResponse().close();
55+
}
56+
5357
int interval = retryInterval.interval();
5458
if (interval <= 0) {
5559
continue;

src/main/java/com/qiniu/storage/BucketManager.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ public FileListing listFiles(String bucket, String prefix, String marker, int li
238238
throws QiniuException {
239239
Response response = listV1(bucket, prefix, marker, limit, delimiter);
240240
if (!response.isOK()) {
241+
response.close();
241242
throw new QiniuException(response);
242243
}
243244
FileListing fileListing = response.jsonToObject(FileListing.class);

src/main/java/com/qiniu/storage/Configuration.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,11 @@ public final class Configuration implements Cloneable {
1919
*/
2020
public static String defaultRsHost = "rs.qiniu.com";
2121
public static String defaultApiHost = "api.qiniu.com";
22-
public static String defaultUcHost = "kodo-config.qiniuapi.com";
22+
public static String defaultUcHost = "uc.qiniuapi.com";
23+
static final String ucBackUpHost0 = "kodo-config.qiniuapi.com";
24+
static final String ucBackUpHost1 = "uc.qbox.me";
2325

24-
static final String ucBackUpHost0 = "uc.qbox.me";
25-
static final String[] defaultUcHosts = new String[]{defaultUcHost, ucBackUpHost0, defaultApiHost};
26+
static final String[] defaultUcHosts = new String[]{defaultUcHost, ucBackUpHost0, ucBackUpHost1};
2627

2728
/**
2829
* 使用的Region

src/main/java/com/qiniu/storage/Region.java

Lines changed: 53 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,11 @@ public class Region implements Cloneable {
5757

5858
/**
5959
* 华东机房相关域名
60+
* 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:z0
6061
*
6162
* @return 区域信息
6263
*/
64+
@Deprecated
6365
public static Region region0() {
6466
return new Builder().
6567
region("z0").
@@ -74,19 +76,23 @@ public static Region region0() {
7476

7577
/**
7678
* 华东机房相关域名
79+
* 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:z0
7780
*
7881
* @return 区域信息
7982
*/
83+
@Deprecated
8084
public static Region huadong() {
8185
return region0();
8286
}
8387

8488

8589
/**
8690
* 华东浙江 2 机房相关域名
91+
* 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:cn-east-2
8792
*
8893
* @return 区域信息
8994
*/
95+
@Deprecated
9096
public static Region regionCnEast2() {
9197
return new Builder().
9298
region("cn-east-2").
@@ -101,9 +107,11 @@ public static Region regionCnEast2() {
101107

102108
/**
103109
* 华东浙江 2 机房相关域名
110+
* 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:cn-east-2
104111
*
105112
* @return 区域信息
106113
*/
114+
@Deprecated
107115
public static Region huadongZheJiang2() {
108116
return regionCnEast2();
109117
}
@@ -137,9 +145,11 @@ public static Region qvmHuadong() {
137145

138146
/**
139147
* 华北机房相关域名
148+
* 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:z1
140149
*
141150
* @return 区域信息
142151
*/
152+
@Deprecated
143153
public static Region region1() {
144154
return new Builder().
145155
region("z1").
@@ -154,9 +164,11 @@ public static Region region1() {
154164

155165
/**
156166
* 华北机房相关域名
167+
* 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:z1
157168
*
158169
* @return 区域信息
159170
*/
171+
@Deprecated
160172
public static Region huabei() {
161173
return region1();
162174
}
@@ -189,9 +201,11 @@ public static Region qvmHuabei() {
189201

190202
/**
191203
* 华南机房相关域名
204+
* 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:z2
192205
*
193206
* @return 区域信息
194207
*/
208+
@Deprecated
195209
public static Region region2() {
196210
return new Builder().
197211
region("z2").
@@ -206,18 +220,22 @@ public static Region region2() {
206220

207221
/**
208222
* 华南机房相关域名
223+
* 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:z2
209224
*
210225
* @return 区域信息
211226
*/
227+
@Deprecated
212228
public static Region huanan() {
213229
return region2();
214230
}
215231

216232
/**
217233
* 北美机房相关域名
234+
* 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:na0
218235
*
219236
* @return 区域信息
220237
*/
238+
@Deprecated
221239
public static Region regionNa0() {
222240
return new Builder().
223241
region("na0").
@@ -232,21 +250,25 @@ public static Region regionNa0() {
232250

233251
/**
234252
* 北美机房相关域名
253+
* 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:na0
235254
*
236255
* @return 区域信息
237256
*/
257+
@Deprecated
238258
public static Region beimei() {
239259
return regionNa0();
240260
}
241261

242262
/**
243263
* 新加坡相关域名
264+
* 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:as0
244265
*
245266
* @return 区域信息
246267
*/
268+
@Deprecated
247269
public static Region regionAs0() {
248270
return new Builder().
249-
region("na0").
271+
region("as0").
250272
srcUpHost("up-as0.qiniup.com").
251273
accUpHost("upload-as0.qiniup.com").
252274
iovipHost("iovip-as0.qbox.me").
@@ -256,6 +278,33 @@ public static Region regionAs0() {
256278
build();
257279
}
258280

281+
/**
282+
* Region 构造方法
283+
* <a href="https://developer.qiniu.com/kodo/1671/region-endpoint-fq"> regionId 参考链接:</a>
284+
*
285+
* @param regionId 根据区域 ID 创建 Region
286+
* @return Region 实例
287+
*/
288+
public static Region createWithRegionId(String regionId) {
289+
if (regionId == null || regionId.isEmpty()) {
290+
return null;
291+
}
292+
293+
if (regionId.equals("z0")) {
294+
return Region.region0();
295+
}
296+
297+
return new Builder()
298+
.region(regionId)
299+
.srcUpHost("up-" + regionId + ".qiniup.com")
300+
.accUpHost("upload-" + regionId + ".qiniup.com")
301+
.iovipHost("iovip-" + regionId + ".qiniuio.com")
302+
.rsHost("rs-" + regionId + ".qiniuapi.com")
303+
.rsfHost("rsf-" + regionId + ".qiniuapi.com")
304+
.apiHost("api-" + regionId + ".qiniuapi.com")
305+
.build();
306+
}
307+
259308
/**
260309
* 新加坡机房相关域名
261310
*
@@ -434,10 +483,10 @@ public Region autoRegion(String... ucServers) {
434483
/**
435484
* 自动选择,其它参数设置无效
436485
*
437-
* @param retryMax 单个域名最大重试次数
438-
* @param retryInterval 重试间隔,单位:毫秒
486+
* @param retryMax 单个域名最大重试次数
487+
* @param retryInterval 重试间隔,单位:毫秒
439488
* @param hostFreezeDuration 冻结时间,单位:毫秒;域名请求失败会被冻结,冻结后域名在冻结时间内不会被使用
440-
* @param ucServers uc host
489+
* @param ucServers uc host
441490
* @return 区域信息
442491
**/
443492
public Region autoRegion(int retryMax, int retryInterval, int hostFreezeDuration, String... ucServers) {

src/test/java/test/com/qiniu/CdnTest.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -176,17 +176,26 @@ public void testCreateTimestampAntiLeechUrlSimple() {
176176
String testUrl_z0_timeStamp_outdate = "http://javasdk-timestamp.peterpy.cn/do_not_delete/1.png?sign=14f48f829b78d5c9a34eb77e9a13f1b6&t=5890f13a";
177177
try {
178178
URL url = new URL(TestConfig.testUrl_z0_timeStamp);
179-
assertEquals(403, getResponse(url.toString()).statusCode, msg);
179+
Response response = getResponse(url.toString());
180+
response.close();
181+
assertEquals(403, response.statusCode, msg);
180182
String signedUrl1 = CdnManager.createTimestampAntiLeechUrl(host, fileName, queryStringMap, encryptKey1,
181183
deadline1);
182184
String signedUrl2 = CdnManager.createTimestampAntiLeechUrl(url, encryptKey2, deadline2);
183185
String signedUrl3 = CdnManager.createTimestampAntiLeechUrl(host, fileName, null, encryptKey1, deadline3);
184186
System.out.println(signedUrl1);
185187
System.out.println(signedUrl2);
186188
System.out.println(signedUrl3);
187-
assertEquals(200, getResponse(signedUrl1).statusCode, msg);
188-
assertEquals(200, getResponse(signedUrl2).statusCode, msg);
189-
assertEquals(403, getResponse(signedUrl3).statusCode, msg);
189+
190+
response = getResponse(signedUrl1);
191+
response.close();
192+
assertEquals(200, response.statusCode, msg);
193+
response = getResponse(signedUrl2);
194+
response.close();
195+
assertEquals(200, response.statusCode, msg);
196+
response = getResponse(signedUrl3);
197+
response.close();
198+
assertEquals(403, response.statusCode, msg);
190199
assertEquals(testUrl_z0_timeStamp_outdate, signedUrl3);
191200
} catch (Exception ex) {
192201
ex.printStackTrace();

src/test/java/test/com/qiniu/TestConfig.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ public static TestFile[] getTestFileArray(String fileSaveKey, String fileMimeTyp
9898
na0.testDomainTimeStamp = testDomain_na0_timeStamp;
9999
na0.testUrlTimeStamp = "http://" + testDomain_na0_timeStamp + "/" + fileSaveKey;
100100
na0.regionId = "na0";
101-
na0.region = Region.regionNa0();
101+
na0.region = Region.createWithRegionId("na0");
102102

103103
TestFile z0 = new TestFile();
104104
z0.key = fileSaveKey;
@@ -109,7 +109,7 @@ public static TestFile[] getTestFileArray(String fileSaveKey, String fileMimeTyp
109109
z0.testDomainTimeStamp = testDomain_z0_timeStamp;
110110
z0.testUrlTimeStamp = "http://" + testDomain_z0_timeStamp + "/" + fileSaveKey;
111111
z0.regionId = "z0";
112-
z0.region = Region.region0();
112+
z0.region = Region.createWithRegionId("z0");
113113

114114
TestFile z0_auto = new TestFile();
115115
z0_auto.key = fileSaveKey;

src/test/java/test/com/qiniu/sms/SmsTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,6 @@ public void sendFulltextMessage() {
102102
Response response = smsManager.sendFulltextMessage(mobiles, "【七牛云】尊敬的用户你好,您的验证码是 38232");
103103
assertNotNull(response);
104104
} catch (QiniuException e) {
105-
e.printStackTrace();
106105
assertTrue(ResCode.find(e.code(), ResCode.getPossibleResCode(401)));
107106
}
108107
}

src/test/java/test/com/qiniu/storage/ApiUploadV2Test.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -323,8 +323,7 @@ public void testAbortUpload() {
323323
assertTrue(initUploadResponse.isOK(), initUploadResponse.getResponse() + "");
324324
assertNotNull(initUploadResponse.getUploadId(), initUploadResponse.getUploadId() + "");
325325
assertNotNull(initUploadResponse.getExpireAt(), initUploadResponse.getExpireAt() + "");
326-
} catch (QiniuException e) {
327-
e.printStackTrace();
326+
} catch (QiniuException ignore) {
328327
}
329328

330329
// 2. 上传文件数据
@@ -393,7 +392,7 @@ public void testAbortUpload() {
393392
// 列举结束
394393
break;
395394
} catch (QiniuException e) {
396-
e.printStackTrace();
395+
// e.printStackTrace();
397396
assertTrue(e.response.statusCode == 612, e.response + "");
398397
break;
399398
}

0 commit comments

Comments
 (0)