Small dotnet library, allowing you to use Polly with Futurum.Core, based on the concepts behind 'Railway Oriented Programming'.
Try to run func, using the Polly policy. If the policy fails, the failing result will be returned as a failure.
var result = await ResultPolly.TryAsync(func, () => ERROR_MESSAGE, pollyPolicy);
Combines Result.Then with ResultPolly.Try
var outputResult = await inputResult.ThenTryAsync(func, () => ERROR_MESSAGE, pollyPolicy);
Create a policy to handle Result
Policy.Handle<Exception>()
.HandleResult()
Create a policy to handle Result<T>
Policy.Handle<Exception>()
.HandleResult<string>()
Get the error message either from the Exception or the Result / Result<T>
var errorMessage = delegateResult.GetErrorMessage()
_pollyPolicy = Policy.Handle<Exception>()
.HandleResult<string>()
.WaitAndRetryAsync(new []{TimeSpan.FromSeconds(5), },
(delegateResult, timeSpan, retryCount, context) =>
{
var error = delegateResult.GetErrorMessage();
_logger.LogWarning("Retry - retryCount: '{RetryCount}'. Error : '{Error}'", retryCount, error);
});
Get the safe error message either from the Exception or the Result / Result<T>
var errorMessage = delegateResult.GetErrorMessageSafe()
_pollyPolicy = Policy.Handle<Exception>()
.HandleResult<string>()
.WaitAndRetryAsync(new []{TimeSpan.FromSeconds(5), },
(delegateResult, timeSpan, retryCount, context) =>
{
var error = delegateResult.GetErrorMessageSafe();
_logger.LogWarning("Retry - retryCount: '{RetryCount}'. Error : '{Error}'", retryCount, error);
});