Skip to content

Commit

Permalink
Region support create by region id (#591)
Browse files Browse the repository at this point in the history
  • Loading branch information
YangSen-qn committed Nov 15, 2023
1 parent 7729932 commit 90fabe4
Show file tree
Hide file tree
Showing 18 changed files with 165 additions and 36 deletions.
2 changes: 1 addition & 1 deletion src/main/java/com/qiniu/http/Response.java
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,7 @@ public synchronized InputStream bodyStream() throws QiniuException {
}

public synchronized void close() {
if (this.response != null) {
if (this.response != null && this.response.body() != null) {
this.response.close();
}
}
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/com/qiniu/storage/ApiInterceptorRetryHosts.java
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,10 @@ Api.Response intercept(Api.Request request, Api.Handler handler) throws QiniuExc
request.setHost(newHost);
}

if (response != null && response.getResponse() != null) {
response.getResponse().close();
}

int interval = retryInterval.interval();
if (interval <= 0) {
continue;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,10 @@ Api.Response intercept(Api.Request request, Api.Handler handler) throws QiniuExc
}
request = cloneRequest;

if (response != null && response.getResponse() != null) {
response.getResponse().close();
}

int interval = retryInterval.interval();
if (interval <= 0) {
continue;
Expand Down
1 change: 1 addition & 0 deletions src/main/java/com/qiniu/storage/BucketManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,7 @@ public FileListing listFiles(String bucket, String prefix, String marker, int li
throws QiniuException {
Response response = listV1(bucket, prefix, marker, limit, delimiter);
if (!response.isOK()) {
response.close();
throw new QiniuException(response);
}
FileListing fileListing = response.jsonToObject(FileListing.class);
Expand Down
7 changes: 4 additions & 3 deletions src/main/java/com/qiniu/storage/Configuration.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,11 @@ public final class Configuration implements Cloneable {
*/
public static String defaultRsHost = "rs.qiniu.com";
public static String defaultApiHost = "api.qiniu.com";
public static String defaultUcHost = "kodo-config.qiniuapi.com";
public static String defaultUcHost = "uc.qiniuapi.com";
static final String ucBackUpHost0 = "kodo-config.qiniuapi.com";
static final String ucBackUpHost1 = "uc.qbox.me";

static final String ucBackUpHost0 = "uc.qbox.me";
static final String[] defaultUcHosts = new String[]{defaultUcHost, ucBackUpHost0, defaultApiHost};
static final String[] defaultUcHosts = new String[]{defaultUcHost, ucBackUpHost0, ucBackUpHost1};

/**
* 使用的Region
Expand Down
57 changes: 53 additions & 4 deletions src/main/java/com/qiniu/storage/Region.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,11 @@ public class Region implements Cloneable {

/**
* 华东机房相关域名
* 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:z0
*
* @return 区域信息
*/
@Deprecated
public static Region region0() {
return new Builder().
region("z0").
Expand All @@ -74,19 +76,23 @@ public static Region region0() {

/**
* 华东机房相关域名
* 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:z0
*
* @return 区域信息
*/
@Deprecated
public static Region huadong() {
return region0();
}


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

/**
* 华东浙江 2 机房相关域名
* 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:cn-east-2
*
* @return 区域信息
*/
@Deprecated
public static Region huadongZheJiang2() {
return regionCnEast2();
}
Expand Down Expand Up @@ -137,9 +145,11 @@ public static Region qvmHuadong() {

/**
* 华北机房相关域名
* 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:z1
*
* @return 区域信息
*/
@Deprecated
public static Region region1() {
return new Builder().
region("z1").
Expand All @@ -154,9 +164,11 @@ public static Region region1() {

/**
* 华北机房相关域名
* 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:z1
*
* @return 区域信息
*/
@Deprecated
public static Region huabei() {
return region1();
}
Expand Down Expand Up @@ -189,9 +201,11 @@ public static Region qvmHuabei() {

/**
* 华南机房相关域名
* 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:z2
*
* @return 区域信息
*/
@Deprecated
public static Region region2() {
return new Builder().
region("z2").
Expand All @@ -206,18 +220,22 @@ public static Region region2() {

/**
* 华南机房相关域名
* 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:z2
*
* @return 区域信息
*/
@Deprecated
public static Region huanan() {
return region2();
}

/**
* 北美机房相关域名
* 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:na0
*
* @return 区域信息
*/
@Deprecated
public static Region regionNa0() {
return new Builder().
region("na0").
Expand All @@ -232,21 +250,25 @@ public static Region regionNa0() {

/**
* 北美机房相关域名
* 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:na0
*
* @return 区域信息
*/
@Deprecated
public static Region beimei() {
return regionNa0();
}

/**
* 新加坡相关域名
* 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:as0
*
* @return 区域信息
*/
@Deprecated
public static Region regionAs0() {
return new Builder().
region("na0").
region("as0").
srcUpHost("up-as0.qiniup.com").
accUpHost("upload-as0.qiniup.com").
iovipHost("iovip-as0.qbox.me").
Expand All @@ -256,6 +278,33 @@ public static Region regionAs0() {
build();
}

/**
* Region 构造方法
* <a href="https://developer.qiniu.com/kodo/1671/region-endpoint-fq"> regionId 参考链接:</a>
*
* @param regionId 根据区域 ID 创建 Region
* @return Region 实例
*/
public static Region createWithRegionId(String regionId) {
if (regionId == null || regionId.isEmpty()) {
return null;
}

if (regionId.equals("z0")) {
return Region.region0();
}

return new Builder()
.region(regionId)
.srcUpHost("up-" + regionId + ".qiniup.com")
.accUpHost("upload-" + regionId + ".qiniup.com")
.iovipHost("iovip-" + regionId + ".qiniuio.com")
.rsHost("rs-" + regionId + ".qiniuapi.com")
.rsfHost("rsf-" + regionId + ".qiniuapi.com")
.apiHost("api-" + regionId + ".qiniuapi.com")
.build();
}

/**
* 新加坡机房相关域名
*
Expand Down Expand Up @@ -434,10 +483,10 @@ public Region autoRegion(String... ucServers) {
/**
* 自动选择,其它参数设置无效
*
* @param retryMax 单个域名最大重试次数
* @param retryInterval 重试间隔,单位:毫秒
* @param retryMax 单个域名最大重试次数
* @param retryInterval 重试间隔,单位:毫秒
* @param hostFreezeDuration 冻结时间,单位:毫秒;域名请求失败会被冻结,冻结后域名在冻结时间内不会被使用
* @param ucServers uc host
* @param ucServers uc host
* @return 区域信息
**/
public Region autoRegion(int retryMax, int retryInterval, int hostFreezeDuration, String... ucServers) {
Expand Down
17 changes: 13 additions & 4 deletions src/test/java/test/com/qiniu/CdnTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -176,17 +176,26 @@ public void testCreateTimestampAntiLeechUrlSimple() {
String testUrl_z0_timeStamp_outdate = "http://javasdk-timestamp.peterpy.cn/do_not_delete/1.png?sign=14f48f829b78d5c9a34eb77e9a13f1b6&t=5890f13a";
try {
URL url = new URL(TestConfig.testUrl_z0_timeStamp);
assertEquals(403, getResponse(url.toString()).statusCode, msg);
Response response = getResponse(url.toString());
response.close();
assertEquals(403, response.statusCode, msg);
String signedUrl1 = CdnManager.createTimestampAntiLeechUrl(host, fileName, queryStringMap, encryptKey1,
deadline1);
String signedUrl2 = CdnManager.createTimestampAntiLeechUrl(url, encryptKey2, deadline2);
String signedUrl3 = CdnManager.createTimestampAntiLeechUrl(host, fileName, null, encryptKey1, deadline3);
System.out.println(signedUrl1);
System.out.println(signedUrl2);
System.out.println(signedUrl3);
assertEquals(200, getResponse(signedUrl1).statusCode, msg);
assertEquals(200, getResponse(signedUrl2).statusCode, msg);
assertEquals(403, getResponse(signedUrl3).statusCode, msg);

response = getResponse(signedUrl1);
response.close();
assertEquals(200, response.statusCode, msg);
response = getResponse(signedUrl2);
response.close();
assertEquals(200, response.statusCode, msg);
response = getResponse(signedUrl3);
response.close();
assertEquals(403, response.statusCode, msg);
assertEquals(testUrl_z0_timeStamp_outdate, signedUrl3);
} catch (Exception ex) {
ex.printStackTrace();
Expand Down
4 changes: 2 additions & 2 deletions src/test/java/test/com/qiniu/TestConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ public static TestFile[] getTestFileArray(String fileSaveKey, String fileMimeTyp
na0.testDomainTimeStamp = testDomain_na0_timeStamp;
na0.testUrlTimeStamp = "http://" + testDomain_na0_timeStamp + "/" + fileSaveKey;
na0.regionId = "na0";
na0.region = Region.regionNa0();
na0.region = Region.createWithRegionId("na0");

TestFile z0 = new TestFile();
z0.key = fileSaveKey;
Expand All @@ -109,7 +109,7 @@ public static TestFile[] getTestFileArray(String fileSaveKey, String fileMimeTyp
z0.testDomainTimeStamp = testDomain_z0_timeStamp;
z0.testUrlTimeStamp = "http://" + testDomain_z0_timeStamp + "/" + fileSaveKey;
z0.regionId = "z0";
z0.region = Region.region0();
z0.region = Region.createWithRegionId("z0");

TestFile z0_auto = new TestFile();
z0_auto.key = fileSaveKey;
Expand Down
1 change: 0 additions & 1 deletion src/test/java/test/com/qiniu/sms/SmsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,6 @@ public void sendFulltextMessage() {
Response response = smsManager.sendFulltextMessage(mobiles, "【七牛云】尊敬的用户你好,您的验证码是 38232");
assertNotNull(response);
} catch (QiniuException e) {
e.printStackTrace();
assertTrue(ResCode.find(e.code(), ResCode.getPossibleResCode(401)));
}
}
Expand Down
5 changes: 2 additions & 3 deletions src/test/java/test/com/qiniu/storage/ApiUploadV2Test.java
Original file line number Diff line number Diff line change
Expand Up @@ -323,8 +323,7 @@ public void testAbortUpload() {
assertTrue(initUploadResponse.isOK(), initUploadResponse.getResponse() + "");
assertNotNull(initUploadResponse.getUploadId(), initUploadResponse.getUploadId() + "");
assertNotNull(initUploadResponse.getExpireAt(), initUploadResponse.getExpireAt() + "");
} catch (QiniuException e) {
e.printStackTrace();
} catch (QiniuException ignore) {
}

// 2. 上传文件数据
Expand Down Expand Up @@ -393,7 +392,7 @@ public void testAbortUpload() {
// 列举结束
break;
} catch (QiniuException e) {
e.printStackTrace();
// e.printStackTrace();
assertTrue(e.response.statusCode == 612, e.response + "");
break;
}
Expand Down
3 changes: 1 addition & 2 deletions src/test/java/test/com/qiniu/storage/BucketTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ public void testListIterator() throws Exception {
testFileWithHandler(new TestFileHandler() {
@Override
public void testFile(TestConfig.TestFile file, BucketManager bucketManager) throws IOException {
BucketManager.FileListIterator it = bucketManager.createFileListIterator(file.getBucketName(), "", 20,
BucketManager.FileListIterator it = bucketManager.createFileListIterator(file.getBucketName(), "", 500,
null);
assertTrue(it.hasNext());
FileInfo[] items0 = it.next();
Expand Down Expand Up @@ -525,7 +525,6 @@ public void testFile(TestConfig.TestFile file, BucketManager bucketManager) thro
fRet = bucketManager.fetch(resUrl, file.getBucketName());
assertEquals(resHash, fRet.hash);
} catch (QiniuException e) {
e.printStackTrace();
// use e.response.toString() may get NullPointException
// when java.net.SocketTimeoutException: timeout
fail(e.getMessage());
Expand Down
12 changes: 4 additions & 8 deletions src/test/java/test/com/qiniu/storage/BucketTest2.java
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ public void testListUseDelimiter() {
public void testListIterator() {
String[] buckets = new String[]{TestConfig.testBucket_z0};
for (String bucket : buckets) {
BucketManager.FileListIterator it = bucketManager.createFileListIterator(bucket, "", 300, null);
BucketManager.FileListIterator it = bucketManager.createFileListIterator(bucket, "", 500, null);

assertTrue(it.hasNext());
FileInfo[] items0 = it.next();
Expand Down Expand Up @@ -230,8 +230,7 @@ public void testStat() {

try {
bucketManager.deleteBucketLifecycleRule(TestConfig.testBucket_z0, ruleName);
} catch (QiniuException e) {
e.printStackTrace();
} catch (QiniuException ignore) {
}

try {
Expand Down Expand Up @@ -265,8 +264,7 @@ public void testStat() {
} finally {
try {
bucketManager.deleteBucketLifecycleRule(TestConfig.testBucket_z0, ruleName);
} catch (QiniuException e) {
e.printStackTrace();
} catch (QiniuException ignore) {
}
}

Expand Down Expand Up @@ -501,7 +499,6 @@ public void testFetch() {
fRet = bucketManager.fetch(resUrl, bucket);
assertEquals(resHash, fRet.hash);
} catch (QiniuException e) {
e.printStackTrace();
// use e.response.toString() may get NullPointException
// when java.net.SocketTimeoutException: timeout
fail(e.getMessage());
Expand Down Expand Up @@ -1470,8 +1467,7 @@ public void testIndexPage() throws QiniuException {

try {
bucketManager.setIndexPage(TestConfig.dummyBucket, IndexPageType.HAS);
} catch (QiniuException e) {
e.printStackTrace();
} catch (QiniuException ignore) {
}
}

Expand Down
3 changes: 3 additions & 0 deletions src/test/java/test/com/qiniu/storage/DownloadUrlTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ public void testUrlWithDeadline() {
System.out.println("create url:" + url);
Client client = new Client();
Response response = client.get(url);
response.close();
assertTrue(response.isOK(), response.toString());

try {
Expand All @@ -120,6 +121,7 @@ private void testNoAuthority(String url) {
try {
Client client = new Client();
Response response = client.get(url);
response.close();
assertFalse(response.isOK(), url);
} catch (QiniuException e) {
assertNotNull(e.response, "except no authority:" + url + "\n but no response:" + e);
Expand All @@ -131,6 +133,7 @@ private void testHasAuthority(String url) {
try {
Client client = new Client();
Response response = client.get(url);
response.close();
assertTrue(response.isOK(), url);
} catch (QiniuException e) {
fail("except has authority:" + url + "\n response:" + e.response);
Expand Down
Loading

0 comments on commit 90fabe4

Please sign in to comment.