mirror of
https://github.com/TeamOctolings/Octobot.git
synced 2025-04-29 18:49:53 +03:00
Split extension methods into separate classes (#161)
This PR splits the extension methods contained in `Extensions.cs` into separate classes in the `Octobot.Extensions` namespace. This was done for multiple reasons: 1) The `Extensions.cs` violates SRP (Single Responsibility Principle) - it takes upon itself every extension method for many types 2) Having a separate class for each extended type is a standard practice - take a look at [Remora.Discord](https://github.com/Remora/Remora.Discord/tree/main/Backend/Remora.Discord.Rest/Extensions) or [osu!](https://github.com/ppy/osu/tree/master/osu.Game/Extensions) 3) Having all extension methods in one file makes it hard to find the method you want
This commit is contained in:
parent
20eac79380
commit
e6f53b13f0
31 changed files with 452 additions and 371 deletions
35
src/Extensions/LoggerExtensions.cs
Normal file
35
src/Extensions/LoggerExtensions.cs
Normal file
|
@ -0,0 +1,35 @@
|
|||
using Microsoft.Extensions.Logging;
|
||||
using Remora.Discord.Commands.Extensions;
|
||||
using Remora.Results;
|
||||
|
||||
namespace Octobot.Extensions;
|
||||
|
||||
public static class LoggerExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Checks if the <paramref name="result" /> has failed due to an error that has resulted from neither invalid user
|
||||
/// input nor the execution environment and logs the error using the provided <paramref name="logger" />.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// This has special behavior for <see cref="ExceptionError" /> - its exception will be passed to the
|
||||
/// <paramref name="logger" />
|
||||
/// </remarks>
|
||||
/// <param name="logger">The logger to use.</param>
|
||||
/// <param name="result">The Result whose error check.</param>
|
||||
/// <param name="message">The message to use if this result has failed.</param>
|
||||
public static void LogResult(this ILogger logger, IResult result, string? message = "")
|
||||
{
|
||||
if (result.IsSuccess || result.Error.IsUserOrEnvironmentError())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (result.Error is ExceptionError exe)
|
||||
{
|
||||
logger.LogError(exe.Exception, "{ErrorMessage}", message);
|
||||
return;
|
||||
}
|
||||
|
||||
logger.LogWarning("{UserMessage}\n{ResultErrorMessage}", message, result.Error.Message);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue