コード例 #1
0
 /// <summary>
 /// Map a handler that is run on a specific condition defined by <paramref name="predicate" />.
 /// </summary>
 /// <param name="request">The <see cref="ISolidHttpRequest" /> that is being extended.</param>
 /// <param name="predicate">The predicate</param>
 /// <param name="handler">The handler to run when <paramref name ="predicate" /> returns true.</param>
 /// <returns>The <see cref="ISolidHttpRequest" /> so that additional calls can be chained.</returns>
 public static ISolidHttpRequest On(this ISolidHttpRequest request, Func <HttpResponseMessage, bool> predicate, Func <IServiceProvider, HttpResponseMessage, ValueTask> handler)
 {
     request.OnHttpResponse(async(services, response) =>
     {
         if (predicate(response))
         {
             await handler(services, response);
         }
     });
     return(request);
 }
コード例 #2
0
 /// <summary>
 /// Expect a success status code.
 /// <para>If a status code  in the 400 range is received, a <see cref="ClientErrorException" /> is thrown.</para>
 /// <para>If a status code  in the 500 range is received, a <see cref="ServerErrorException" /> is thrown.</para>
 /// </summary>
 /// <param name="request">The <see cref="ISolidHttpRequest" /> that is being extended.</param>
 /// <returns>The <see cref="ISolidHttpRequest" /> so that additional calls can be chained.</returns>
 public static ISolidHttpRequest ExpectSuccess(this ISolidHttpRequest request)
 {
     request.OnHttpResponse(async(services, response) =>
     {
         if (!response.IsSuccessStatusCode)
         {
             var message = await GenerateNonSuccessMessage(response);
             if ((int)response.StatusCode < 500)
             {
                 throw new ClientErrorException(message);
             }
             else
             {
                 throw new ServerErrorException(message);
             }
         }
     });
     return(request);
 }
コード例 #3
0
 /// <summary>
 /// Registers an event handler that is run just after the <see cref="HttpResponseMessage" /> is receied by the <seealso cref="HttpClient" />.
 /// </summary>
 /// <param name="request">The <see cref="ISolidHttpRequest" /> that is being extended.</param>
 /// <param name="handler">An event handler that is run just after the <see cref="HttpResponseMessage" /> is receied by the <seealso cref="HttpClient" />.</param>
 /// <returns>The <see cref="ISolidHttpRequest" /> so that additional calls can be chained.</returns>
 public static ISolidHttpRequest OnHttpResponse(this ISolidHttpRequest request, Action <IServiceProvider, HttpResponseMessage> handler)
 => request.OnHttpResponse(handler.ConvertToAsync());
コード例 #4
0
 /// <summary>
 /// Registers an event handler that is run just after the <see cref="HttpResponseMessage" /> is receied by the <seealso cref="HttpClient" />.
 /// </summary>
 /// <param name="request">The <see cref="ISolidHttpRequest" /> that is being extended.</param>
 /// <param name="handler">An event handler that is run just after the <see cref="HttpResponseMessage" /> is received by the <seealso cref="HttpClient" />.</param>
 /// <returns>The <see cref="ISolidHttpRequest" /> so that additional calls can be chained.</returns>
 public static ISolidHttpRequest OnHttpResponse(this ISolidHttpRequest request, Func <HttpResponseMessage, ValueTask> handler)
 => request.OnHttpResponse(handler.Convert());