using HermesSocketLibrary.Requests.Messages; using HermesSocketServer.Models; using ILogger = Serilog.ILogger; namespace HermesSocketServer.Requests { public class GetPermissions : IRequest { public string Name => "get_permissions"; public string[] RequiredKeys => []; private readonly ILogger _logger; public GetPermissions(ILogger logger) { _logger = logger; } public Task Grant(Channel channel, IDictionary data) { var groups = channel.Groups.Get().Values; var groupChatters = channel.Groups.Chatters.Values.SelectMany(g => g.Get().Values); var groupPermissions = channel.GroupPermissions.Get().Values; _logger.Information($"Fetched all permissions for channel [channel: {channel.Id}]"); var info = new GroupInfo() { Groups = groups, GroupChatters = groupChatters, GroupPermissions = groupPermissions, }; return Task.FromResult(RequestResult.Successful(info, notifyClientsOnAccount: false)); } } }