nft-faucet/NftFaucetRadzen/Utils/ResultWrapper.cs
Ivan Yaremenchuk 2d151db33e Add minting
2022-09-20 21:05:08 -05:00

62 lines
1.2 KiB
C#

using CSharpFunctionalExtensions;
namespace NftFaucetRadzen.Utils;
public static class ResultWrapper
{
public static Result Wrap(Action action)
{
try
{
action();
return Result.Success();
}
catch (Exception e)
{
return Result.Failure(e.Message);
}
}
public static Result<T> Wrap<T>(Func<T> func)
{
try
{
return func();
}
catch (Exception e)
{
return Result.Failure<T>(e.Message);
}
}
public static async Task<Result> Wrap(Func<Task> func)
{
try
{
var task = func();
await task;
return Result.Success();
}
catch (Exception e)
{
return Result.Failure(e.Message);
}
}
public static async Task<Result<T>> Wrap<T>(Func<Task<T>> func)
{
try
{
var task = func();
return await task;
}
catch (Exception e)
{
return Result.Failure<T>(e.Message);
}
}
public static Task<Result> Wrap(Task task) => Wrap(() => task);
public static Task<Result<T>> Wrap<T>(Task<T> task) => Wrap(() => task);
}