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> CreateMapping = new Dictionary>() { [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; } } }