Ejemplo n.º 1
0
 /// <summary>
 /// Creates from the instance of HttpResponseMessage.
 /// </summary>
 /// <param name="statusCode">The HTTP status code.</param>
 /// <param name="exceptionMessageSource">The source used to build exception message, see <see cref="WebRequestExceptionMessageSource"/></param>
 /// <param name="responseContent"></param>
 /// <returns>The instance of <see cref="WebRequestException"/>.</returns>
 public static WebRequestException CreateFromStatusCode(
     HttpStatusCode statusCode,
     WebRequestExceptionMessageSource exceptionMessageSource,
     string?responseContent = null)
 {
     return(new WebRequestException(statusCode.ToString(), statusCode, null, responseContent, exceptionMessageSource, null));
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="WebRequestException"/> class.
 /// </summary>
 /// <param name="reasonPhrase">The message that describes the error.</param>
 /// <param name="statusCode">The HTTP status code.</param>
 /// <param name="requestUri">The original request URI.</param>
 /// <param name="responseContent">The response content.</param>
 /// <param name="exceptionMessageSource">The source used to build exception message, see <see cref="WebRequestExceptionMessageSource"/></param>
 /// <param name="inner">The inner exception.</param>
 private WebRequestException(
     string reasonPhrase,
     HttpStatusCode statusCode,
     Uri?requestUri,
     string?responseContent,
     WebRequestExceptionMessageSource exceptionMessageSource,
     Exception inner)
     : base(BuildMessage(statusCode, reasonPhrase, responseContent, exceptionMessageSource), inner)
 {
     ReasonPhrase = reasonPhrase;
     Code         = statusCode;
     Response     = responseContent;
     RequestUri   = requestUri;
 }
Ejemplo n.º 3
0
 private static string?BuildMessage(
     HttpStatusCode statusCode,
     string reasonPhrase,
     string?responseContent,
     WebRequestExceptionMessageSource exceptionMessageSource)
 {
     reasonPhrase ??= statusCode.ToString();
     if (exceptionMessageSource == WebRequestExceptionMessageSource.ReasonPhrase)
     {
         return(reasonPhrase);
     }
     else if (exceptionMessageSource == WebRequestExceptionMessageSource.ResponseContent)
     {
         return(responseContent);
     }
     else
     {
         return($"Request failed with reason {((int)statusCode)} {reasonPhrase}. Response content was {responseContent}.");
     }
 }
Ejemplo n.º 4
0
 internal static ODataResponse FromStatusCode(ITypeCache typeCache, int statusCode, IEnumerable <KeyValuePair <string, string> > headers, Stream responseStream, WebRequestExceptionMessageSource exceptionMessageSource)
 {
     if (statusCode >= (int)HttpStatusCode.BadRequest)
     {
         var responseContent = Utils.StreamToString(responseStream, true);
         return(new ODataResponse(typeCache)
         {
             StatusCode = statusCode,
             Exception = WebRequestException.CreateFromStatusCode((HttpStatusCode)statusCode, exceptionMessageSource, responseContent),
             Headers = headers
         });
     }
     else
     {
         return(new ODataResponse(typeCache)
         {
             StatusCode = statusCode,
             Headers = headers
         });
     }
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Creates from the instance of WebException.
 /// </summary>
 /// <param name="ex">The instance of <see cref="WebException"/>.</param>
 /// <param name="exceptionMessageSource">The source used to build exception message, see <see cref="WebRequestExceptionMessageSource"/></param>
 /// <returns>The instance of <see cref="WebRequestException"/>.</returns>
 public static WebRequestException CreateFromWebException(WebException ex, WebRequestExceptionMessageSource exceptionMessageSource = WebRequestExceptionMessageSource.ReasonPhrase)
 {
     return(ex.Response is not HttpWebResponse response ?
            new WebRequestException(ex) :
            new WebRequestException(ex.Message, response.StatusCode, response.ResponseUri, Utils.StreamToString(response.GetResponseStream()), exceptionMessageSource, ex));
 }
Ejemplo n.º 6
0
    /// <summary>
    /// Creates from the instance of HttpResponseMessage.
    /// </summary>
    /// <param name="response">The instance of <see cref="HttpResponseMessage"/>.</param>
    /// <param name="exceptionMessageSource">The source used to build exception message, see <see cref="WebRequestExceptionMessageSource"/></param>
    /// <returns>The instance of <see cref="WebRequestException"/>.</returns>
    public async static Task <WebRequestException> CreateFromResponseMessageAsync(HttpResponseMessage response, WebRequestExceptionMessageSource exceptionMessageSource)
    {
        var requestUri = response.RequestMessage?.RequestUri;

        return(new WebRequestException(response.ReasonPhrase, response.StatusCode, requestUri,
                                       response.Content != null ? await response.Content.ReadAsStringAsync().ConfigureAwait(false) : null, exceptionMessageSource, null));
    }