diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-10-15 11:51:00 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-10-15 11:51:00 -0400 |
| commit | f4ad65196a255457bdd4fed645a50ed009669549 (patch) | |
| tree | a41c413067039ab6268557e8c2dab26994f42776 /MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs | |
| parent | 6c3355b26f1075863b294fb2049f62b3293558c4 (diff) | |
update playlist drag and drop
Diffstat (limited to 'MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs')
| -rw-r--r-- | MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs | 89 |
1 files changed, 37 insertions, 52 deletions
diff --git a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs index 2578602a1..c54c0a873 100644 --- a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs +++ b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs @@ -356,7 +356,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager private async Task CacheResponse(HttpResponseInfo response, string responseCachePath) { - _fileSystem.CreateDirectory(Path.GetDirectoryName(responseCachePath)); + _fileSystem.CreateDirectory(Path.GetDirectoryName(responseCachePath)); using (var responseStream = response.Content) { @@ -465,20 +465,11 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager } catch (OperationCanceledException ex) { - var exception = GetCancellationException(options, options.CancellationToken, ex); - - var httpException = exception as HttpException; - - if (httpException != null && httpException.IsTimedOut) - { - client.LastTimeout = DateTime.UtcNow; - } - - throw exception; + throw GetCancellationException(options, client, options.CancellationToken, ex); } catch (Exception ex) { - throw GetException(ex, options); + throw GetException(ex, options, client); } finally { @@ -489,30 +480,6 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager } } - /// <summary> - /// Gets the exception. - /// </summary> - /// <param name="ex">The ex.</param> - /// <param name="options">The options.</param> - /// <returns>HttpException.</returns> - private HttpException GetException(WebException ex, HttpRequestOptions options) - { - if (options.LogErrors) - { - _logger.ErrorException("Error getting response from " + options.Url, ex); - } - - var exception = new HttpException(ex.Message, ex); - - var response = ex.Response as HttpWebResponse; - if (response != null) - { - exception.StatusCode = response.StatusCode; - } - - return exception; - } - private HttpResponseInfo GetResponseInfo(HttpWebResponse httpResponse, Stream content, long? contentLength, IDisposable disposable) { return new HttpResponseInfo(disposable) @@ -603,7 +570,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager { ValidateParams(options); - _fileSystem.CreateDirectory(_appPaths.TempDirectory); + _fileSystem.CreateDirectory(_appPaths.TempDirectory); var tempFile = Path.Combine(_appPaths.TempDirectory, Guid.NewGuid() + ".tmp"); @@ -628,6 +595,8 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager _logger.Info("HttpClientManager.GetTempFileResponse url: {0}", options.Url); } + var client = GetHttpClient(GetHostFromUrl(options.Url), options.EnableHttpCompression); + try { options.CancellationToken.ThrowIfCancellationRequested(); @@ -636,7 +605,6 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager { var httpResponse = (HttpWebResponse)response; - var client = GetHttpClient(GetHostFromUrl(options.Url), options.EnableHttpCompression); EnsureSuccessStatusCode(client, httpResponse, options); options.CancellationToken.ThrowIfCancellationRequested(); @@ -673,7 +641,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager catch (Exception ex) { DeleteTempFile(tempFile); - throw GetException(ex, options); + throw GetException(ex, options, client); } finally { @@ -698,14 +666,37 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager protected static readonly CultureInfo UsCulture = new CultureInfo("en-US"); - private Exception GetException(Exception ex, HttpRequestOptions options) + private Exception GetException(Exception ex, HttpRequestOptions options, HttpClientInfo client) { + if (ex is HttpException) + { + return ex; + } + var webException = ex as WebException ?? ex.InnerException as WebException; if (webException != null) { - return GetException(webException, options); + if (options.LogErrors) + { + _logger.ErrorException("Error getting response from " + options.Url, ex); + } + + var exception = new HttpException(ex.Message, ex); + + var response = webException.Response as HttpWebResponse; + if (response != null) + { + exception.StatusCode = response.StatusCode; + + if ((int)response.StatusCode == 429) + { + client.LastTimeout = DateTime.UtcNow; + } + } + + return exception; } var operationCanceledException = ex as OperationCanceledException @@ -713,7 +704,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager if (operationCanceledException != null) { - return GetCancellationException(options, options.CancellationToken, operationCanceledException); + return GetCancellationException(options, client, options.CancellationToken, operationCanceledException); } if (options.LogErrors) @@ -792,10 +783,11 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager /// Throws the cancellation exception. /// </summary> /// <param name="options">The options.</param> + /// <param name="client">The client.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <param name="exception">The exception.</param> /// <returns>Exception.</returns> - private Exception GetCancellationException(HttpRequestOptions options, CancellationToken cancellationToken, OperationCanceledException exception) + private Exception GetCancellationException(HttpRequestOptions options, HttpClientInfo client, CancellationToken cancellationToken, OperationCanceledException exception) { // If the HttpClient's timeout is reached, it will cancel the Task internally if (!cancellationToken.IsCancellationRequested) @@ -807,6 +799,8 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager _logger.Error(msg); } + client.LastTimeout = DateTime.UtcNow; + // Throw an HttpException so that the caller doesn't think it was cancelled by user code return new HttpException(msg, exception) { @@ -825,15 +819,6 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager if (!isSuccessful) { - if ((int) statusCode == 429) - { - throw new HttpException(response.StatusDescription) - { - IsTimedOut = true - }; - } - - if (statusCode == HttpStatusCode.RequestEntityTooLarge) if (options.LogErrorResponseBody) { try |
