Merge pull request #96 from ToBeFrank/develop

Fixed: WebClient issues when downloading a large amoount of data and running under mono
This commit is contained in:
Mark McDowall 2014-08-08 15:59:06 -07:00
commit ebeccffd36
1 changed files with 12 additions and 2 deletions

View File

@ -22,6 +22,16 @@ namespace NzbDrone.Common.Http
public class HttpProvider : IHttpProvider public class HttpProvider : IHttpProvider
{ {
private class GZipWebClient : WebClient
{
protected override WebRequest GetWebRequest(Uri address)
{
HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
return request;
}
}
private readonly Logger _logger; private readonly Logger _logger;
public const string CONTENT_LENGTH_HEADER = "Content-Length"; public const string CONTENT_LENGTH_HEADER = "Content-Length";
@ -49,7 +59,7 @@ namespace NzbDrone.Common.Http
{ {
try try
{ {
var client = new WebClient { Credentials = identity }; var client = new GZipWebClient { Credentials = identity };
client.Headers.Add(HttpRequestHeader.UserAgent, _userAgent); client.Headers.Add(HttpRequestHeader.UserAgent, _userAgent);
return client.DownloadString(url); return client.DownloadString(url);
} }
@ -107,7 +117,7 @@ namespace NzbDrone.Common.Http
_logger.Debug("Downloading [{0}] to [{1}]", url, fileName); _logger.Debug("Downloading [{0}] to [{1}]", url, fileName);
var stopWatch = Stopwatch.StartNew(); var stopWatch = Stopwatch.StartNew();
var webClient = new WebClient(); var webClient = new GZipWebClient();
webClient.Headers.Add(HttpRequestHeader.UserAgent, _userAgent); webClient.Headers.Add(HttpRequestHeader.UserAgent, _userAgent);
webClient.DownloadFile(url, fileName); webClient.DownloadFile(url, fileName);
stopWatch.Stop(); stopWatch.Stop();