|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
|
|
|
|
using Model = Discord.API.AuditLog;
|
|
|
|
|
using EntryModel = Discord.API.AuditLogEntry;
|
|
|
|
|
|
|
|
|
|
namespace Discord.Rest
|
|
|
|
|
{
|
|
|
|
|
internal static class AuditLogHelper
|
|
|
|
|
{
|
|
|
|
|
private static readonly Dictionary<ActionType, Func<BaseDiscordClient, Model, EntryModel, IAuditLogData>> CreateMapping
|
|
|
|
|
= new Dictionary<ActionType, Func<BaseDiscordClient, Model, EntryModel, IAuditLogData>>()
|
|
|
|
|
{
|
|
|
|
|
[ActionType.GuildUpdated] = GuildUpdateAuditLogData.Create,
|
|
|
|
|
|
|
|
|
|
[ActionType.ChannelCreated] = ChannelCreateAuditLogData.Create,
|
|
|
|
|
[ActionType.ChannelUpdated] = ChannelUpdateAuditLogData.Create,
|
|
|
|
|
[ActionType.ChannelDeleted] = ChannelDeleteAuditLogData.Create,
|
|
|
|
|
|
|
|
|
|
[ActionType.OverwriteCreated] = OverwriteCreateAuditLogData.Create,
|
|
|
|
|
[ActionType.OverwriteUpdated] = OverwriteUpdateAuditLogData.Create,
|
|
|
|
|
[ActionType.OverwriteDeleted] = OverwriteDeleteAuditLogData.Create,
|
|
|
|
|
|
|
|
|
|
[ActionType.Kick] = KickAuditLogData.Create,
|
|
|
|
|
[ActionType.Prune] = PruneAuditLogData.Create,
|
|
|
|
|
[ActionType.Ban] = BanAuditLogData.Create,
|
|
|
|
|
[ActionType.Unban] = UnbanAuditLogData.Create,
|
|
|
|
|
[ActionType.MemberUpdated] = MemberUpdateAuditLogData.Create,
|
|
|
|
|
[ActionType.MemberRoleUpdated] = MemberRoleAuditLogData.Create,
|
|
|
|
|
|
|
|
|
|
[ActionType.RoleCreated] = RoleCreateAuditLogData.Create,
|
|
|
|
|
[ActionType.RoleUpdated] = RoleUpdateAuditLogData.Create,
|
|
|
|
|
[ActionType.RoleDeleted] = RoleDeleteAuditLogData.Create,
|
|
|
|
|
|
|
|
|
|
[ActionType.InviteCreated] = InviteCreateAuditLogData.Create,
|
|
|
|
|
[ActionType.InviteUpdated] = InviteUpdateAuditLogData.Create,
|
|
|
|
|
[ActionType.InviteDeleted] = InviteDeleteAuditLogData.Create,
|
|
|
|
|
|
|
|
|
|
[ActionType.WebhookCreated] = WebhookCreateAuditLogData.Create,
|
|
|
|
|
[ActionType.WebhookUpdated] = WebhookUpdateAuditLogData.Create,
|
|
|
|
|
[ActionType.WebhookDeleted] = WebhookDeleteAuditLogData.Create,
|
|
|
|
|
|
|
|
|
|
[ActionType.EmojiCreated] = EmoteCreateAuditLogData.Create,
|
|
|
|
|
[ActionType.EmojiUpdated] = EmoteUpdateAuditLogData.Create,
|
|
|
|
|
[ActionType.EmojiDeleted] = EmoteDeleteAuditLogData.Create,
|
|
|
|
|
|
|
|
|
|
[ActionType.MessageDeleted] = MessageDeleteAuditLogData.Create,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
public static IAuditLogData CreateData(BaseDiscordClient discord, Model log, EntryModel entry)
|
|
|
|
|
{
|
|
|
|
|
if (CreateMapping.TryGetValue(entry.Action, out var func))
|
|
|
|
|
return func(discord, log, entry);
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|