Skip to content

Commit 732b81c

Browse files
authored
Merge pull request #411 from YangSen-qn/uc_query_v4
version 8: uc query v3 to v4
2 parents 056d17d + 2edc81b commit 732b81c

File tree

8 files changed

+98
-163
lines changed

8 files changed

+98
-163
lines changed

.idea/misc.xml

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

library/src/main/java/com/qiniu/android/collect/UploadInfoReporter.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -221,10 +221,7 @@ private RequestTransaction createUploadRequestTransaction(String tokenString){
221221
ArrayList<String> hosts = new ArrayList<>();
222222
hosts.add(config.serverURL);
223223

224-
ArrayList<String> ioHosts = new ArrayList<>();
225-
ioHosts.add(ZoneInfo.SDKDefaultIOHost);
226-
227-
transaction = new RequestTransaction(hosts, ioHosts, token);
224+
transaction = new RequestTransaction(hosts, ZoneInfo.EmptyRegionId, token);
228225
return transaction;
229226
}
230227

library/src/main/java/com/qiniu/android/common/AutoZone.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,7 @@ public void complete(ResponseInfo responseInfo, UploadRegionRequestMetrics reque
8585
private RequestTransaction createUploadRequestTransaction(UpToken token){
8686
List<String> hosts = getUcServerList();
8787

88-
ArrayList<String> ioHosts = new ArrayList<>();
89-
ioHosts.add(ZoneInfo.SDKDefaultIOHost);
90-
91-
RequestTransaction transaction = new RequestTransaction(hosts, ioHosts, token);
88+
RequestTransaction transaction = new RequestTransaction(hosts, ZoneInfo.EmptyRegionId, token);
9289
transactions.add(transaction);
9390
return transaction;
9491
}

library/src/main/java/com/qiniu/android/common/FixedZone.java

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import java.util.ArrayList;
66
import java.util.Arrays;
7+
import java.util.List;
78

89

910
/**
@@ -16,35 +17,35 @@ public final class FixedZone extends Zone {
1617
*/
1718
public static final Zone zone0 = new FixedZone(new String[]{"upload.qiniup.com", "up.qiniup.com"},
1819
new String[]{"upload.qbox.me", "up.qbox.me"},
19-
new String[]{"iovip.qbox.me"});
20+
"z0");
2021

2122
/**
2223
* 华北机房
2324
*/
2425
public static final Zone zone1 = new FixedZone(new String[]{"upload-z1.qiniup.com", "up-z1.qiniup.com"},
2526
new String[]{"upload-z1.qbox.me", "up-z1.qbox.me"},
26-
new String[]{"iovip-z1.qbox.me"});
27+
"z1");
2728

2829
/**
2930
* 华南机房
3031
*/
3132
public static final Zone zone2 = new FixedZone(new String[]{"upload-z2.qiniup.com", "up-z2.qiniup.com"},
3233
new String[]{"upload-z2.qbox.me", "up-z2.qbox.me"},
33-
new String[]{"iovip-z2.qbox.me"});
34+
"z2");
3435

3536
/**
3637
* 北美机房
3738
*/
3839
public static final Zone zoneNa0 = new FixedZone(new String[]{"upload-na0.qiniup.com", "up-na0.qiniup.com"},
3940
new String[]{"upload-na0.qbox.me", "up-na0.qbox.me"},
40-
new String[]{"iovip-na0.qbox.me"});
41+
"na0");
4142

4243
/**
4344
* 新加坡机房
4445
*/
4546
public static final Zone zoneAs0 = new FixedZone(new String[]{"upload-as0.qiniup.com", "up-as0.qiniup.com"},
4647
new String[]{"upload-as0.qbox.me", "up-as0.qbox.me"},
47-
new String[]{"iovip-as0.qbox.me"});
48+
"as0");
4849

4950
private ZonesInfo zonesInfo;
5051

@@ -81,37 +82,34 @@ public FixedZone(String[] upDomains) {
8182
this(upDomains, null);
8283
}
8384

84-
public FixedZone(String[] upDomains, String[] ioDomains) {
85-
this(upDomains, null, ioDomains);
85+
public FixedZone(String[] upDomains, String regionId) {
86+
this(upDomains, null, regionId);
8687
}
8788

88-
private FixedZone(String[] upDomains, String[] oldUpDomains, String[] ioDomains) {
89-
this.zonesInfo = createZonesInfo(upDomains, oldUpDomains, ioDomains);
89+
private FixedZone(String[] upDomains, String[] oldUpDomains, String regionId) {
90+
this.zonesInfo = createZonesInfo(upDomains, oldUpDomains, regionId);
9091
}
9192

9293
private ZonesInfo createZonesInfo(String[] upDomains,
9394
String[] oldUpDomains,
94-
String[] ioDomains) {
95+
String regionId) {
9596

9697
if (upDomains == null || upDomains.length == 0) {
9798
return null;
9899
}
99100

100-
ArrayList<String> upDomainsList = new ArrayList<String>(Arrays.asList(upDomains));
101-
ArrayList<String> oldUpDomainsList = null;
101+
List<String> upDomainsList = new ArrayList<String>(Arrays.asList(upDomains));
102+
List<String> oldUpDomainsList = null;
102103
if (oldUpDomains != null){
103104
oldUpDomainsList = new ArrayList<String>(Arrays.asList(oldUpDomains));
104105
}
105-
ArrayList<String> ioDomainsList = null;
106-
if (ioDomains != null){
107-
ioDomainsList = new ArrayList<String>(Arrays.asList(ioDomains));
108-
}
109-
ZoneInfo zoneInfo = ZoneInfo.buildInfo(upDomainsList, oldUpDomainsList, ioDomainsList);
106+
ZoneInfo zoneInfo = ZoneInfo.buildInfo(upDomainsList, oldUpDomainsList, regionId);
110107
if (zoneInfo == null) {
111108
return null;
112109
}
113110
ArrayList<ZoneInfo> zoneInfoList = new ArrayList<ZoneInfo>();
114111
zoneInfoList.add(zoneInfo);
112+
115113
return new ZonesInfo(zoneInfoList);
116114
}
117115

library/src/main/java/com/qiniu/android/common/ZoneInfo.java

Lines changed: 57 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -22,49 +22,39 @@ public class ZoneInfo {
2222

2323
private static int DOMAIN_FROZEN_SECONDS = 10 * 60;
2424

25-
private int ttl;
26-
public UploadServerGroup acc;
27-
public UploadServerGroup src;
28-
public UploadServerGroup old_acc;
29-
public UploadServerGroup old_src;
30-
31-
public String regionId;
32-
public ArrayList<String> allHosts;
25+
public final int ttl;
26+
public final List<String> domains;
27+
public final List<String> old_domains;
28+
29+
public final String regionId;
30+
public List<String> allHosts;
3331
public JSONObject detailInfo;
3432

3533
public static ZoneInfo buildInfo(List<String> mainHosts,
36-
List<String> ioHosts){
37-
return buildInfo(mainHosts, null, ioHosts);
34+
String regionId){
35+
return buildInfo(mainHosts, null, regionId);
3836
}
3937

4038
public static ZoneInfo buildInfo(List<String> mainHosts,
4139
List<String> oldHosts,
42-
List<String> ioHosts){
40+
String regionId){
4341
if (mainHosts == null){
4442
return null;
4543
}
4644

4745
HashMap<String, Object> up = new HashMap<>();
48-
49-
HashMap<String, Object> up_acc = new HashMap<>();
50-
up_acc.put("main", mainHosts);
51-
up.put("acc", up_acc);
52-
46+
up.put("domains", mainHosts);
5347
if (oldHosts != null){
54-
HashMap<String, Object> up_old_acc = new HashMap<>();
55-
up_old_acc.put("main", oldHosts);
56-
up.put("old_acc", up_old_acc);
48+
up.put("old", oldHosts);
5749
}
5850

59-
HashMap<String, Object> io_src = new HashMap<>();
60-
HashMap<String, Object> io = new HashMap<>();
61-
io_src.put("main", (ioHosts != null ? ioHosts : new ArrayList<String>()));
62-
io.put("src", io_src);
63-
51+
if (regionId == null){
52+
regionId = EmptyRegionId;
53+
}
6454
HashMap<String, Object> info = new HashMap<>();
6555
info.put("ttl", 86400*1000);
56+
info.put("region", regionId);
6657
info.put("up", up);
67-
info.put("io", io);
6858

6959
JSONObject object = new JSONObject(info);
7060

@@ -76,16 +66,13 @@ public static ZoneInfo buildInfo(List<String> mainHosts,
7666
}
7767

7868
private ZoneInfo(int ttl,
79-
UploadServerGroup acc,
80-
UploadServerGroup src,
81-
UploadServerGroup old_acc,
82-
UploadServerGroup old_src) {
83-
69+
String regionId,
70+
List<String> domains,
71+
List<String> old_domains) {
8472
this.ttl = ttl;
85-
this.acc = acc;
86-
this.src = src;
87-
this.old_acc = old_acc;
88-
this.old_src = old_src;
73+
this.regionId = regionId;
74+
this.domains = domains;
75+
this.old_domains = old_domains;
8976
}
9077

9178
/**
@@ -99,73 +86,49 @@ public static ZoneInfo buildFromJson(JSONObject obj) throws JSONException {
9986
return null;
10087
}
10188

102-
int ttl = obj.getInt("ttl");
103-
List<String> domainsList = new ArrayList<>();
104-
ConcurrentHashMap<String, Long> domainsMap = new ConcurrentHashMap<>();
89+
int ttl = obj.optInt("ttl");
90+
String regionId = obj.optString("region");
91+
if (regionId == null){
92+
regionId = EmptyRegionId;
93+
}
10594

106-
String io_host = "null";
107-
try {
108-
JSONObject io = obj.getJSONObject("io");
109-
JSONObject io_src = io.getJSONObject("src");
110-
JSONArray io_main = io_src.getJSONArray("main");
111-
io_host = io_main.length() > 0 ? io_main.getString(0) : "null";
112-
} catch (JSONException e){}
113-
114-
String zoneRegion = "unknown";
115-
if (io_host.equals("iovip.qbox.me")){
116-
zoneRegion = "z0";
117-
} else if (io_host.equals("iovip-z1.qbox.me")){
118-
zoneRegion = "z1";
119-
} else if (io_host.equals("iovip-z2.qbox.me")){
120-
zoneRegion = "z2";
121-
} else if (io_host.equals("iovip-na0.qbox.me")){
122-
zoneRegion = "na0";
123-
} else if (io_host.equals("iovip-as0.qbox.me")){
124-
zoneRegion = "as0";
125-
} else if (io_host.equals(SDKDefaultIOHost)){
126-
zoneRegion = EmptyRegionId;
95+
JSONObject up = obj.optJSONObject("up");
96+
if (up == null){
97+
return null;
12798
}
12899

129-
JSONObject up = obj.getJSONObject("up");
100+
List<String> allHosts = new ArrayList<>();
101+
List<String> domains = new ArrayList<>();
102+
JSONArray domainsJson = up.optJSONArray("domains");
103+
if (domainsJson != null && domainsJson.length() > 0){
104+
for (int i=0; i< domainsJson.length(); i++) {
105+
String domain = domainsJson.optString(i);
106+
if (domain != null && domain.length() > 0){
107+
domains.add(domain);
108+
allHosts.add(domain);
109+
}
110+
}
111+
}
130112

131-
JSONObject acc = null;
132-
JSONObject src = null;
133-
JSONObject old_acc = null;
134-
JSONObject old_src = null;
135-
try {
136-
acc = up.getJSONObject("acc");;
137-
} catch (JSONException e) {}
138-
try {
139-
src = up.getJSONObject("src");;
140-
} catch (JSONException e) {}
141-
try {
142-
old_acc = up.getJSONObject("old_acc");;
143-
} catch (JSONException e) {}
144-
try {
145-
old_src = up.getJSONObject("old_src");;
146-
} catch (JSONException e) {}
113+
List<String> old_domains = new ArrayList<>();
114+
JSONArray old_domainsJson = up.optJSONArray("old");
115+
if (old_domainsJson != null && old_domainsJson.length() > 0){
116+
for (int i=0; i< old_domainsJson.length(); i++) {
117+
String domain = old_domainsJson.optString(i);
118+
if (domain != null && domain.length() > 0){
119+
old_domains.add(domain);
120+
allHosts.add(domain);
121+
}
122+
}
123+
}
147124

148-
ZoneInfo zoneInfo = new ZoneInfo(ttl,
149-
UploadServerGroup.buildInfoFromJson(acc),
150-
UploadServerGroup.buildInfoFromJson(src),
151-
UploadServerGroup.buildInfoFromJson(old_acc),
152-
UploadServerGroup.buildInfoFromJson(old_src));
153-
zoneInfo.regionId = zoneRegion;
125+
if (domains.size() == 0 && old_domains.size() == 0){
126+
return null;
127+
}
128+
129+
ZoneInfo zoneInfo = new ZoneInfo(ttl, regionId, domains, old_domains);
154130
zoneInfo.detailInfo = obj;
155131

156-
ArrayList<String> allHosts = new ArrayList<>();
157-
if (zoneInfo.acc != null && zoneInfo.acc.allHosts != null){
158-
allHosts.addAll(zoneInfo.acc.allHosts);
159-
}
160-
if (zoneInfo.src != null && zoneInfo.src.allHosts != null){
161-
allHosts.addAll(zoneInfo.src.allHosts);
162-
}
163-
if (zoneInfo.old_acc != null && zoneInfo.old_acc.allHosts != null){
164-
allHosts.addAll(zoneInfo.old_acc.allHosts);
165-
}
166-
if (zoneInfo.old_src != null && zoneInfo.old_src.allHosts != null){
167-
allHosts.addAll(zoneInfo.old_src.allHosts);
168-
}
169132
zoneInfo.allHosts = allHosts;
170133

171134
return zoneInfo;

library/src/main/java/com/qiniu/android/http/dns/DnsPrefetcher.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -314,9 +314,11 @@ public void complete(int code, ResponseInfo responseInfo, UploadRegionRequestMet
314314

315315
ZonesInfo autoZonesInfo = currentZone.getZonesInfo(token);
316316
ArrayList<String> autoHosts = new ArrayList<>();
317-
for (ZoneInfo zoneInfo : autoZonesInfo.zonesInfo) {
318-
if (zoneInfo != null && zoneInfo.allHosts != null){
319-
autoHosts.addAll(zoneInfo.allHosts);
317+
if (autoZonesInfo != null && autoZonesInfo.zonesInfo != null && autoZonesInfo.zonesInfo.size() > 0) {
318+
for (ZoneInfo zoneInfo : autoZonesInfo.zonesInfo) {
319+
if (zoneInfo != null && zoneInfo.allHosts != null) {
320+
autoHosts.addAll(zoneInfo.allHosts);
321+
}
320322
}
321323
}
322324
return autoHosts.toArray(new String[0]);

library/src/main/java/com/qiniu/android/http/request/RequestTransaction.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,20 +43,20 @@ public RequestTransaction(List<String> hosts,
4343
}
4444

4545
public RequestTransaction(List<String> hosts,
46-
List<String> ioHosts,
46+
String regionId,
4747
UpToken token){
48-
this(new Configuration.Builder().build(), UploadOptions.defaultOptions(), hosts, ioHosts, null, token);
48+
this(new Configuration.Builder().build(), UploadOptions.defaultOptions(), hosts, regionId, null, token);
4949
}
5050

5151
public RequestTransaction(Configuration config,
5252
UploadOptions uploadOption,
5353
List<String> hosts,
54-
List<String> ioHosts,
54+
String regionId,
5555
String key,
5656
UpToken token){
5757
this(config, uploadOption, key, token);
5858
IUploadRegion region = new UploadDomainRegion();
59-
region.setupRegionData(ZoneInfo.buildInfo(hosts, ioHosts));
59+
region.setupRegionData(ZoneInfo.buildInfo(hosts, regionId));
6060
this.initData(region, region);
6161
}
6262

@@ -106,7 +106,7 @@ public boolean shouldRetry(ResponseInfo responseInfo, JSONObject response) {
106106

107107
HashMap<String, String> header = new HashMap<>();
108108
header.put("User-Agent", userAgent);
109-
String action = "/v3/query?ak=" + (token.accessKey != null ? token.accessKey : "") + "&bucket=" + (token.bucket != null ? token.bucket : "") ;
109+
String action = "/v4/query?ak=" + (token.accessKey != null ? token.accessKey : "") + "&bucket=" + (token.bucket != null ? token.bucket : "") ;
110110
regionRequest.get(action, isAsync, header, shouldRetryHandler, new HttpRegionRequest.RequestCompleteHandler() {
111111
@Override
112112
public void complete(ResponseInfo responseInfo, UploadRegionRequestMetrics requestMetrics, JSONObject response) {

0 commit comments

Comments
 (0)