private static ServerInformation[] LoadListUsingRequest(string uri) {
var request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "GET";
request.UserAgent = InternalUtils.GetKunosUserAgent();
request.Headers.Add("Accept-Encoding", "gzip");
if (OptionIgnoreSystemProxy) {
request.Proxy = null;
}
if (OptionForceDisabledCache) {
request.CachePolicy = _cachePolicy ??
(_cachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore));
}
request.ContinueTimeout = OptionWebRequestTimeout;
request.ReadWriteTimeout = OptionWebRequestTimeout;
request.Timeout = OptionWebRequestTimeout;
ServerInformation[] result;
using (var response = (HttpWebResponse)request.GetResponse()) {
if (response.StatusCode != HttpStatusCode.OK) {
throw new Exception($"StatusCode = {response.StatusCode}");
}
using (var stream = response.GetResponseStream()) {
if (stream == null) {
throw new Exception(@"ResponseStream = null");
}
if (string.Equals(response.Headers.Get("Content-Encoding"), @"gzip", StringComparison.OrdinalIgnoreCase)) {
using (var deflateStream = new GZipStream(stream, CompressionMode.Decompress)) {
result = ServerInformation.DeserializeSafe(deflateStream);
}
} else {
result = ServerInformation.DeserializeSafe(stream);
}
}
}
return result;
}