public static IApiClientOperation ValidateWith(this IApiClientOperation operation, ProblemValidator?validator) { if (validator is not null) { operation.ConfigureFailure(validator.DisplayErrors); } return(operation); }
public static async Task <TResult?> ExecuteAndTryReturnAsync <TResult>(this IApiClientOperation <TResult> operation, CancellationToken cancellationToken = default) where TResult : class { TResult?result = null; await operation.OnSuccess(r => result = r).ExecuteAsync(cancellationToken); return(result); }
public static IApiClientOperation OnClientFault(this IApiClientOperation operation, Action <ProblemDetails> action) { operation.ConfigureFailure(problem => { if (problem.Status is >= 400 and < 500) { action(problem); } }); return(operation); }
public static IApiClientOperation OnFailureStatusCode(this IApiClientOperation operation, HttpStatusCode statusCode, Action <ProblemDetails> action) { operation.ConfigureFailure(problem => { if (problem.Status == (int)statusCode) { action(problem); } }); return(operation); }
public static IApiClientOperation OnInternalServerError(this IApiClientOperation operation, Action <ProblemDetails> action) { operation.ConfigureFailure(problem => { if (problem.Status is 500) { action(problem); } }); return(operation); }
public static IApiClientOperation OnNotFound(this IApiClientOperation operation, Action <ProblemDetails> action) { operation.ConfigureFailure(problem => { if (problem.Status is 404) { action(problem); } }); return(operation); }
public static IApiClientOperation OnUnauthorized(this IApiClientOperation operation, Action <ProblemDetails> action) { operation.ConfigureFailure(problem => { if (problem.Status is 401 or 403) { action(problem); } }); return(operation); }
public static async Task <TResult> ExecuteAndEnsureReturnAsync <TResult>(this IApiClientOperation <TResult> operation, CancellationToken cancellationToken = default) where TResult : class { TResult?result = null; await operation .OnSuccess(r => result = r) .OnFailure(problem => throw new HttpRequestException(problem.Detail, null, (HttpStatusCode?)problem.Status)) .ExecuteAsync(cancellationToken); Debug.Assert(result is not null); return(result); }
public static IApiClientOperation OnFailure(this IApiClientOperation operation, Action <ProblemDetails> action) { operation.ConfigureFailure(action); return(operation); }
public static IApiClientOperation <TResult> OnSuccess <TResult>(this IApiClientOperation <TResult> operation, Func <TResult, CancellationToken, Task> task) { operation.SetSuccessTask(task); return(operation); }
public static IApiClientOperation <TResult> OnSuccess <TResult>(this IApiClientOperation <TResult> operation, Action <TResult> action) { operation.ConfigureSuccess(action); return(operation); }
public static IApiClientOperation OnSuccess(this IApiClientOperation operation, Func <HttpStatusCode, CancellationToken, Task> task) { operation.SetSuccessTask(task); return(operation); }
public static IApiClientOperation OnSuccess(this IApiClientOperation operation, Action <HttpStatusCode> action) { operation.ConfigureSuccess(action); return(operation); }
public static IApiClientOperation SendErrorTo(this IApiClientOperation operation, ISnackbar snackbar) { operation.ConfigureFailure(problem => snackbar.Add(problem.GetDisplayString(), Severity.Error)); return(operation); }
public static IApiClientOperation <TResult> CacheFor <TResult>(this IApiClientOperation <TResult> operation, TimeSpan cacheTime) { operation.EnableCaching(() => new MemoryCacheEntryOptions().SetAbsoluteExpiration(cacheTime)); return(operation); }