@@ -53,76 +53,79 @@ public static Zone QueryZone(string accessKey, string bucket, string scheme = "h
5353 HttpResult hr = null ;
5454 try
5555 {
56- string queryUrl = string . Format ( "{0}{1}/v2 /query?ak={2}&bucket={3}" ,
56+ string queryUrl = string . Format ( "{0}{1}/v4 /query?ak={2}&bucket={3}" ,
5757 scheme ,
5858 Config . DefaultUcHost ,
5959 accessKey ,
6060 bucket
6161 ) ;
6262 HttpManager httpManager = new HttpManager ( ) ;
6363 hr = httpManager . Get ( queryUrl , null ) ;
64- if ( hr . Code == ( int ) HttpCode . OK && ! string . IsNullOrEmpty ( hr . Text ) )
64+ if ( hr . Code != ( int ) HttpCode . OK || string . IsNullOrEmpty ( hr . Text ) )
6565 {
66- ZoneInfo zInfo = JsonConvert . DeserializeObject < ZoneInfo > ( hr . Text ) ;
67- if ( zInfo != null )
68- {
69- zone = new Zone ( ) ;
70- zone . SrcUpHosts = zInfo . Up . Src . Main ;
71- zone . CdnUpHosts = zInfo . Up . Acc . Main ;
72-
73- if ( ! string . IsNullOrEmpty ( zInfo . Io . Src . Main [ 0 ] ) )
74- {
75- zone . IovipHost = zInfo . Io . Src . Main [ 0 ] ;
76- }
77- else
78- {
79- zone . IovipHost = Config . DefaultIoHost ;
80- }
81-
82- if ( ! string . IsNullOrEmpty ( zInfo . Api . Acc . Main [ 0 ] ) )
83- {
84- zone . ApiHost = zInfo . Api . Acc . Main [ 0 ] ;
85- }
86- else
87- {
88- zone . ApiHost = Config . DefaultApiHost ;
89- }
90-
91- if ( ! string . IsNullOrEmpty ( zInfo . Rs . Acc . Main [ 0 ] ) )
92- {
93- zone . RsHost = zInfo . Rs . Acc . Main [ 0 ] ;
94- }
95- else
96- {
97- zone . RsHost = Config . DefaultRsHost ;
98- }
99-
100- if ( ! string . IsNullOrEmpty ( zInfo . Rsf . Acc . Main [ 0 ] ) )
101- {
102- zone . RsfHost = zInfo . Rsf . Acc . Main [ 0 ] ;
103- }
104- else
105- {
106- zone . RsfHost = Config . DefaultRsfHost ;
107- }
108-
109- lock ( rwLock )
110- {
111- zoneCacheValue = new ZoneCacheValue ( ) ;
112- TimeSpan ttl = TimeSpan . FromSeconds ( zInfo . Ttl ) ;
113- zoneCacheValue . Deadline = DateTime . Now . Add ( ttl ) ;
114- zoneCacheValue . Zone = zone ;
115- zoneCache [ cacheKey ] = zoneCacheValue ;
116- }
117- }
118- else
119- {
120- throw new Exception ( "JSON Deserialize failed: " + hr . Text ) ;
121- }
66+ throw new Exception ( "code: " + hr . Code + ", text: " + hr . Text + ", ref-text:" + hr . RefText ) ;
67+ }
68+
69+ ZoneInfo zInfo = JsonConvert . DeserializeObject < ZoneInfo > ( hr . Text ) ;
70+ if ( zInfo == null )
71+ {
72+ throw new Exception ( "JSON Deserialize failed: " + hr . Text ) ;
73+ }
74+
75+ if ( zInfo . Hosts . Length == 0 )
76+ {
77+ throw new Exception ( "There are no hosts available: " + hr . Text ) ;
78+ }
79+
80+ ZoneHost zHost = zInfo . Hosts [ 0 ] ;
81+
82+ zone = new Zone ( ) ;
83+ zone . SrcUpHosts = zHost . Up . Domains ;
84+ zone . CdnUpHosts = zHost . Up . Domains ;
85+
86+ if ( ! string . IsNullOrEmpty ( zHost . Io . Domains [ 0 ] ) )
87+ {
88+ zone . IovipHost = zHost . Io . Domains [ 0 ] ;
12289 }
12390 else
12491 {
125- throw new Exception ( "code: " + hr . Code + ", text: " + hr . Text + ", ref-text:" + hr . RefText ) ;
92+ zone . IovipHost = Config . DefaultIoHost ;
93+ }
94+
95+ if ( ! string . IsNullOrEmpty ( zHost . Api . Domains [ 0 ] ) )
96+ {
97+ zone . ApiHost = zHost . Api . Domains [ 0 ] ;
98+ }
99+ else
100+ {
101+ zone . ApiHost = Config . DefaultApiHost ;
102+ }
103+
104+ if ( ! string . IsNullOrEmpty ( zHost . Rs . Domains [ 0 ] ) )
105+ {
106+ zone . RsHost = zHost . Rs . Domains [ 0 ] ;
107+ }
108+ else
109+ {
110+ zone . RsHost = Config . DefaultRsHost ;
111+ }
112+
113+ if ( ! string . IsNullOrEmpty ( zHost . Rsf . Domains [ 0 ] ) )
114+ {
115+ zone . RsfHost = zHost . Rsf . Domains [ 0 ] ;
116+ }
117+ else
118+ {
119+ zone . RsfHost = Config . DefaultRsfHost ;
120+ }
121+
122+ lock ( rwLock )
123+ {
124+ zoneCacheValue = new ZoneCacheValue ( ) ;
125+ TimeSpan ttl = TimeSpan . FromSeconds ( zHost . Ttl ) ;
126+ zoneCacheValue . Deadline = DateTime . Now . Add ( ttl ) ;
127+ zoneCacheValue . Zone = zone ;
128+ zoneCache [ cacheKey ] = zoneCacheValue ;
126129 }
127130 }
128131 catch ( Exception ex )
0 commit comments