forked from TeamInklings/Octobot
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
28
src/Extensions/GuildScheduledEventExtensions.cs
Normal file
28
src/Extensions/GuildScheduledEventExtensions.cs
Normal file
|
@ -0,0 +1,28 @@
|
|||
using Remora.Discord.API.Abstractions.Objects;
|
||||
using Remora.Rest.Core;
|
||||
using Remora.Results;
|
||||
|
||||
namespace Octobot.Extensions;
|
||||
|
||||
public static class GuildScheduledEventExtensions
|
||||
{
|
||||
public static Result TryGetExternalEventData(this IGuildScheduledEvent scheduledEvent, out DateTimeOffset endTime,
|
||||
out string? location)
|
||||
{
|
||||
endTime = default;
|
||||
location = default;
|
||||
if (!scheduledEvent.EntityMetadata.AsOptional().IsDefined(out var metadata))
|
||||
{
|
||||
return new ArgumentNullError(nameof(scheduledEvent.EntityMetadata));
|
||||
}
|
||||
|
||||
if (!metadata.Location.IsDefined(out location))
|
||||
{
|
||||
return new ArgumentNullError(nameof(metadata.Location));
|
||||
}
|
||||
|
||||
return scheduledEvent.ScheduledEndTime.AsOptional().IsDefined(out endTime)
|
||||
? Result.FromSuccess()
|
||||
: new ArgumentNullError(nameof(scheduledEvent.ScheduledEndTime));
|
||||
}
|
||||
}
|
Reference in a new issue