/// <summary> /// Map a handler to a specific http status code. /// </summary> /// <param name="request">The <see cref="ISolidHttpRequest" /> that is being extended.</param> /// <param name="code">The http status code.</param> /// <param name="handler">The handler to run when the status code of the <see cref="HttpResponseMessage" /> matches <paramref name="code" />.</param> /// <returns>The <see cref="ISolidHttpRequest" /> so that additional calls can be chained.</returns> public static ISolidHttpRequest On(this ISolidHttpRequest request, HttpStatusCode code, Action <HttpResponseMessage> handler) => request.On(r => r.StatusCode == code, handler);
/// <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 <HttpResponseMessage, ValueTask> handler) => request.On(predicate, handler.Convert());
/// <summary> /// Map a handler to a specific http status code. /// </summary> /// <param name="request">The <see cref="ISolidHttpRequest" /> that is being extended.</param> /// <param name="code">The http status code.</param> /// <param name="handler">The handler to run when the status code of the <see cref="HttpResponseMessage" /> matches <paramref name="code" />.</param> /// <returns>The <see cref="ISolidHttpRequest" /> so that additional calls can be chained.</returns> public static ISolidHttpRequest On(this ISolidHttpRequest request, int code, Action <IServiceProvider, HttpResponseMessage> handler) => request.On((HttpStatusCode)code, handler);
/// <summary> /// Map a handler to a specific http status code. /// </summary> /// <param name="request">The <see cref="ISolidHttpRequest" /> that is being extended.</param> /// <param name="code">The http status code.</param> /// <param name="handler">The handler to run when the status code of the <see cref="HttpResponseMessage" /> matches <paramref name="code" />.</param> /// <returns>The <see cref="ISolidHttpRequest" /> so that additional calls can be chained.</returns> public static ISolidHttpRequest On(this ISolidHttpRequest request, HttpStatusCode code, Func <IServiceProvider, HttpResponseMessage, ValueTask> handler) => request.On(response => response.StatusCode == code, handler);
/// <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, Action <IServiceProvider, HttpResponseMessage> handler) => request.On(predicate, handler.ConvertToAsync());
/// <summary> /// Map a handler to a specific http status code. /// </summary> /// <param name="request">The <see cref="ISolidHttpRequest" /> that is being extended.</param> /// <param name="code">The http status code.</param> /// <param name="handler">The handler to run when the status code of the <see cref="HttpResponseMessage" /> matches <paramref name="code" />.</param> /// <returns>The <see cref="ISolidHttpRequest" /> so that additional calls can be chained.</returns> public static ISolidHttpRequest On(this ISolidHttpRequest request, HttpStatusCode code, Func <HttpResponseMessage, ValueTask> handler) => request.On(code, handler.Convert());
/// <summary> /// Map an async handler to a specific http status code /// </summary> /// <param name="request">The ISolidHttpRequest</param> /// <param name="predicate">The predicate</param> /// <param name="handler">The async handler</param> /// <returns>SolidHttpRequest</returns> public static ISolidHttpRequest On(this ISolidHttpRequest request, Func <HttpResponseMessage, bool> predicate, Func <HttpResponseMessage, Task> handler) { return(request.On(predicate, (provider, response) => handler(response))); }
/// <summary> /// Map an async handler to a specific http status code /// </summary> /// <param name="request">The ISolidHttpRequest</param> /// <param name="code">The http status code</param> /// <param name="handler">The async handler</param> /// <returns>SolidHttpRequest</returns> public static ISolidHttpRequest On(this ISolidHttpRequest request, HttpStatusCode code, Func <HttpResponseMessage, Task> handler) { return(request.On(code, (provider, response) => handler(response))); }
/// <summary> /// Map a handler to a specific http status code /// </summary> /// <param name="request">The ISolidHttpRequest</param> /// <param name="predicate">The predicate</param> /// <param name="handler">The handler</param> /// <returns>SolidHttpRequest</returns> public static ISolidHttpRequest On(this ISolidHttpRequest request, Func <HttpResponseMessage, bool> predicate, Action <HttpResponseMessage> handler) { return(request.On(predicate, (services, response) => handler(response))); }
/// <summary> /// Map a handler to a specific http status code /// </summary> /// <param name="request">The ISolidHttpRequest</param> /// <param name="code">The http status code</param> /// <param name="handler">The handler</param> /// <returns>SolidHttpRequest</returns> public static ISolidHttpRequest On(this ISolidHttpRequest request, HttpStatusCode code, Action <IServiceProvider, HttpResponseMessage> handler) { return(request.On(r => r.StatusCode == code, handler)); }