/// <summary>
        /// Parses a web exception to get an error message and a <see cref="HttpWebClientServiceExceptionStatus"/> status code.
        /// </summary>
        /// <param name="webException">The web exception.</param>
        /// <param name="url">The URL.</param>
        /// <param name="proxyHost">The proxy host.</param>
        /// <param name="status">The status.</param>
        /// <returns></returns>
        private static string ParseWebRequestException(WebException webException, Uri url, string proxyHost,
                                                       out HttpWebClientServiceExceptionStatus status)
        {
            StringBuilder messageBuilder = new StringBuilder();

            switch (webException.Status)
            {
            case WebExceptionStatus.ProtocolError:
                HttpWebResponse response = (HttpWebResponse)webException.Response;
                switch (response.StatusCode)
                {
                case HttpStatusCode.ProxyAuthenticationRequired:
                    status = HttpWebClientServiceExceptionStatus.ProxyError;
                    messageBuilder.AppendFormat(
                        ExceptionMessages.ProxyAuthenticationFailure, proxyHost, url.Host);
                    break;

                default:
                    status = HttpWebClientServiceExceptionStatus.ServerError;
                    messageBuilder
                    .AppendFormat(ExceptionMessages.ServerError, url.Host)
                    .Append(response.StatusDescription);
                    break;
                }
                break;

            case WebExceptionStatus.ProxyNameResolutionFailure:
                status = HttpWebClientServiceExceptionStatus.ProxyError;
                messageBuilder.AppendFormat(ExceptionMessages.ProxyNameResolutionFailure, proxyHost);
                break;

            case WebExceptionStatus.RequestProhibitedByProxy:
                status = HttpWebClientServiceExceptionStatus.ProxyError;
                messageBuilder.AppendFormat(ExceptionMessages.RequestProhibitedByProxy, url.Host, proxyHost);
                break;

            case WebExceptionStatus.NameResolutionFailure:
                status = HttpWebClientServiceExceptionStatus.NameResolutionFailure;
                messageBuilder.AppendFormat(ExceptionMessages.NameResolutionFailure, proxyHost);
                break;

            case WebExceptionStatus.ConnectFailure:
                status = HttpWebClientServiceExceptionStatus.ConnectFailure;
                messageBuilder.AppendFormat(ExceptionMessages.ConnectFailure, url.Host);
                break;

            case WebExceptionStatus.Timeout:
                status = HttpWebClientServiceExceptionStatus.Timeout;
                messageBuilder.AppendFormat(ExceptionMessages.Timeout, url.Host);
                break;

            default:
                status = HttpWebClientServiceExceptionStatus.WebException;
                messageBuilder.AppendFormat(ExceptionMessages.UnknownException, url.Host, webException.Status);
                break;
            }

            return(messageBuilder.ToString());
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="HttpWebClientServiceException"/> class.
 /// </summary>
 /// <param name="status">The status.</param>
 /// <param name="ex">The ex.</param>
 /// <param name="url">The URL.</param>
 /// <param name="message">The message.</param>
 private HttpWebClientServiceException(HttpWebClientServiceExceptionStatus status, Exception ex, Uri url, string message)
     : base(message, ex)
 {
     Status = status;
     Url    = url;
 }
        /// <summary>
        /// Parses an HTTP request exception to get an error message and a <see cref="HttpWebClientServiceExceptionStatus" /> status code.
        /// </summary>
        /// <param name="httpRequestException">The HTTP request exception.</param>
        /// <param name="httpStatusCode">The HTTP status code.</param>
        /// <param name="url">The URL.</param>
        /// <param name="proxyHost">The proxy host.</param>
        /// <param name="status">The status.</param>
        /// <returns></returns>
        private static string ParseHttpRequestException(HttpRequestException httpRequestException, HttpStatusCode httpStatusCode,
                                                        Uri url, string proxyHost, out HttpWebClientServiceExceptionStatus status)
        {
            StringBuilder messageBuilder = new StringBuilder();

            switch (httpStatusCode)
            {
            // Informational
            case HttpStatusCode.Continue:
                goto default;

            case HttpStatusCode.SwitchingProtocols:
                goto default;

            // Redirection
            case HttpStatusCode.MultipleChoices:
                goto default;

            case HttpStatusCode.MovedPermanently:
                goto default;

            case HttpStatusCode.Redirect:
                goto default;

            case HttpStatusCode.RedirectMethod:
                goto default;

            case HttpStatusCode.NotModified:
                goto default;

            case HttpStatusCode.UseProxy:
                status = HttpWebClientServiceExceptionStatus.ProxyError;
                messageBuilder.AppendFormat(
                    ExceptionMessages.ProxyNameResolutionFailure, proxyHost);
                break;

            case HttpStatusCode.Unused:
                goto default;

            case HttpStatusCode.TemporaryRedirect:
                goto default;

            // Client Error
            case HttpStatusCode.BadRequest:
                goto default;

            case HttpStatusCode.Unauthorized:
                goto default;

            case HttpStatusCode.PaymentRequired:
                goto default;

            case HttpStatusCode.Forbidden:
                goto default;

            case HttpStatusCode.NotFound:
                goto default;

            case HttpStatusCode.MethodNotAllowed:
                goto default;

            case HttpStatusCode.NotAcceptable:
                goto default;

            case HttpStatusCode.ProxyAuthenticationRequired:
                status = HttpWebClientServiceExceptionStatus.ProxyError;
                messageBuilder.AppendFormat(
                    ExceptionMessages.ProxyAuthenticationFailure, proxyHost, url.Host);
                break;

            case HttpStatusCode.RequestTimeout:
                status = HttpWebClientServiceExceptionStatus.Timeout;
                messageBuilder.AppendFormat(ExceptionMessages.Timeout, url.Host);
                break;

            case HttpStatusCode.Conflict:
                goto default;

            case HttpStatusCode.Gone:
                goto default;

            case HttpStatusCode.LengthRequired:
                goto default;

            case HttpStatusCode.PreconditionFailed:
                goto default;

            case HttpStatusCode.RequestEntityTooLarge:
                goto default;

            case HttpStatusCode.RequestUriTooLong:
                goto default;

            case HttpStatusCode.UnsupportedMediaType:
                goto default;

            case HttpStatusCode.RequestedRangeNotSatisfiable:
                goto default;

            case HttpStatusCode.ExpectationFailed:
                goto default;

            case HttpStatusCode.UpgradeRequired:
                goto default;

            // Server  Error
            case HttpStatusCode.InternalServerError:
            case HttpStatusCode.NotImplemented:
            case HttpStatusCode.BadGateway:
            case HttpStatusCode.ServiceUnavailable:
            case HttpStatusCode.GatewayTimeout:
            case HttpStatusCode.HttpVersionNotSupported:
                status = HttpWebClientServiceExceptionStatus.ServerError;
                messageBuilder
                .AppendFormat(ExceptionMessages.ServerError, url.Host)
                .Append($"{(int)httpStatusCode} ({httpStatusCode.ToString().ConvertUpperCamelCaseToString()})");
                break;

            default:
                status = HttpWebClientServiceExceptionStatus.Exception;
                messageBuilder.AppendFormat(ExceptionMessages.UnknownException, url.Host,
                                            $"{(int)httpStatusCode} ({httpStatusCode.ToString().ConvertUpperCamelCaseToString()})");
                break;
            }

            return(messageBuilder.ToString());
        }
Exemple #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="HttpWebClientServiceException"/> class.
 /// </summary>
 /// <param name="status">The status.</param>
 /// <param name="ex">The ex.</param>
 /// <param name="url">The URL.</param>
 /// <param name="message">The message.</param>
 private HttpWebClientServiceException(HttpWebClientServiceExceptionStatus status, Exception ex, Uri url, string message)
     : base(message, ex)
 {
     Status = status;
     Url = url;
 }
Exemple #5
0
        /// <summary>
        /// Parses an HTTP request exception to get an error message and a <see cref="HttpWebClientServiceExceptionStatus" /> status code.
        /// </summary>
        /// <param name="httpRequestException">The HTTP request exception.</param>
        /// <param name="httpStatusCode">The HTTP status code.</param>
        /// <param name="url">The URL.</param>
        /// <param name="proxyHost">The proxy host.</param>
        /// <param name="status">The status.</param>
        /// <returns></returns>
        private static string ParseHttpRequestException(HttpRequestException httpRequestException, HttpStatusCode httpStatusCode,
            Uri url, string proxyHost, out HttpWebClientServiceExceptionStatus status)
        {
            StringBuilder messageBuilder = new StringBuilder();
            switch (httpStatusCode)
            {
                // Informational
                case HttpStatusCode.Continue:
                    goto default;
                case HttpStatusCode.SwitchingProtocols:
                    goto default;

                    // Redirection
                case HttpStatusCode.MultipleChoices:
                    goto default;
                case HttpStatusCode.MovedPermanently:
                    goto default;
                case HttpStatusCode.Redirect:
                    goto default;
                case HttpStatusCode.RedirectMethod:
                    goto default;
                case HttpStatusCode.NotModified:
                    goto default;
                case HttpStatusCode.UseProxy:
                    status = HttpWebClientServiceExceptionStatus.ProxyError;
                    messageBuilder.AppendFormat(
                        ExceptionMessages.ProxyNameResolutionFailure, proxyHost);
                    break;
                case HttpStatusCode.Unused:
                    goto default;
                case HttpStatusCode.TemporaryRedirect:
                    goto default;

                    // Client Error
                case HttpStatusCode.BadRequest:
                    goto default;
                case HttpStatusCode.Unauthorized:
                    goto default;
                case HttpStatusCode.PaymentRequired:
                    goto default;
                case HttpStatusCode.Forbidden:
                    goto default;
                case HttpStatusCode.NotFound:
                    goto default;
                case HttpStatusCode.MethodNotAllowed:
                    goto default;
                case HttpStatusCode.NotAcceptable:
                    goto default;
                case HttpStatusCode.ProxyAuthenticationRequired:
                    status = HttpWebClientServiceExceptionStatus.ProxyError;
                    messageBuilder.AppendFormat(
                        ExceptionMessages.ProxyAuthenticationFailure, proxyHost, url.Host);
                    break;
                case HttpStatusCode.RequestTimeout:
                    status = HttpWebClientServiceExceptionStatus.Timeout;
                    messageBuilder.AppendFormat(ExceptionMessages.Timeout, url.Host);
                    break;
                case HttpStatusCode.Conflict:
                    goto default;
                case HttpStatusCode.Gone:
                    goto default;
                case HttpStatusCode.LengthRequired:
                    goto default;
                case HttpStatusCode.PreconditionFailed:
                    goto default;
                case HttpStatusCode.RequestEntityTooLarge:
                    goto default;
                case HttpStatusCode.RequestUriTooLong:
                    goto default;
                case HttpStatusCode.UnsupportedMediaType:
                    goto default;
                case HttpStatusCode.RequestedRangeNotSatisfiable:
                    goto default;
                case HttpStatusCode.ExpectationFailed:
                    goto default;
                case HttpStatusCode.UpgradeRequired:
                    goto default;

                    // Server  Error
                case HttpStatusCode.InternalServerError:
                case HttpStatusCode.NotImplemented:
                case HttpStatusCode.BadGateway:
                case HttpStatusCode.ServiceUnavailable:
                case HttpStatusCode.GatewayTimeout:
                case HttpStatusCode.HttpVersionNotSupported:
                    status = HttpWebClientServiceExceptionStatus.ServerError;
                    messageBuilder
                        .AppendFormat(ExceptionMessages.ServerError, url.Host)
                        .Append($"{(int)httpStatusCode} ({httpStatusCode.ToString().ConvertUpperCamelCaseToString()})");
                    break;

                default:
                    status = HttpWebClientServiceExceptionStatus.Exception;
                    messageBuilder.AppendFormat(ExceptionMessages.UnknownException, url.Host,
                        $"{(int)httpStatusCode} ({httpStatusCode.ToString().ConvertUpperCamelCaseToString()})");
                    break;
            }

            return messageBuilder.ToString();
        }
Exemple #6
0
        /// <summary>
        /// Parses a web exception to get an error message and a <see cref="HttpWebClientServiceExceptionStatus"/> status code.
        /// </summary>
        /// <param name="webException">The web exception.</param>
        /// <param name="url">The URL.</param>
        /// <param name="proxyHost">The proxy host.</param>
        /// <param name="status">The status.</param>
        /// <returns></returns>
        private static string ParseWebRequestException(WebException webException, Uri url, string proxyHost,
            out HttpWebClientServiceExceptionStatus status)
        {
            StringBuilder messageBuilder = new StringBuilder();
            switch (webException.Status)
            {
                case WebExceptionStatus.ProtocolError:
                    HttpWebResponse response = (HttpWebResponse)webException.Response;
                    switch (response.StatusCode)
                    {
                        case HttpStatusCode.ProxyAuthenticationRequired:
                            status = HttpWebClientServiceExceptionStatus.ProxyError;
                            messageBuilder.AppendFormat(
                                ExceptionMessages.ProxyAuthenticationFailure, proxyHost, url.Host);
                            break;

                        default:
                            status = HttpWebClientServiceExceptionStatus.ServerError;
                            messageBuilder
                                .AppendFormat(ExceptionMessages.ServerError, url.Host)
                                .Append(response.StatusDescription);
                            break;
                    }
                    break;
                case WebExceptionStatus.ProxyNameResolutionFailure:
                    status = HttpWebClientServiceExceptionStatus.ProxyError;
                    messageBuilder.AppendFormat(ExceptionMessages.ProxyNameResolutionFailure, proxyHost);
                    break;
                case WebExceptionStatus.RequestProhibitedByProxy:
                    status = HttpWebClientServiceExceptionStatus.ProxyError;
                    messageBuilder.AppendFormat(ExceptionMessages.RequestProhibitedByProxy, url.Host, proxyHost);
                    break;
                case WebExceptionStatus.NameResolutionFailure:
                    status = HttpWebClientServiceExceptionStatus.NameResolutionFailure;
                    messageBuilder.AppendFormat(ExceptionMessages.NameResolutionFailure, proxyHost);
                    break;
                case WebExceptionStatus.ConnectFailure:
                    status = HttpWebClientServiceExceptionStatus.ConnectFailure;
                    messageBuilder.AppendFormat(ExceptionMessages.ConnectFailure, url.Host);
                    break;
                case WebExceptionStatus.Timeout:
                    status = HttpWebClientServiceExceptionStatus.Timeout;
                    messageBuilder.AppendFormat(ExceptionMessages.Timeout, url.Host);
                    break;
                default:
                    status = HttpWebClientServiceExceptionStatus.WebException;
                    messageBuilder.AppendFormat(ExceptionMessages.UnknownException, url.Host, webException.Status);
                    break;
            }

            return messageBuilder.ToString();
        }