private static string LoadUsingRequest(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;
string 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)) {
using (var reader = new StreamReader(deflateStream, Encoding.UTF8)) {
result = reader.ReadToEnd();
}
}
} else {
using (var reader = new StreamReader(stream, Encoding.UTF8)) {
result = reader.ReadToEnd();
}
}
}
}
if (!OptionSaveResponses) return result;
var filename = FilesStorage.Instance.GetFilename(@"Logs",
$"Dump_{Regex.Replace(uri.Split('/').Last(), @"\W+", "_")}.json");
if (!File.Exists(filename)) {
File.WriteAllText(FilesStorage.Instance.GetFilename(filename), result);
}
return result;
}