Files
hermes-server/Requests/GetGroups.cs

37 lines
1.2 KiB
C#

using HermesSocketLibrary.Requests.Messages;
using HermesSocketServer.Models;
using ILogger = Serilog.ILogger;
namespace HermesSocketServer.Requests
{
public class GetGroups : IRequest
{
public string Name => "get_groups";
public string[] RequiredKeys => [];
private readonly ILogger _logger;
public GetGroups(ILogger logger)
{
_logger = logger;
}
public Task<RequestResult> Grant(Channel channel, IDictionary<string, object> data)
{
var groups = channel.Groups.Get().Values;
var chatters = channel.Groups.Chatters;
var all = groups.Select(g => new GroupDetails()
{
Group = g,
Chatters = chatters[g.Id].Get().Values,
});
_logger.Information($"Fetched all groups for channel [channel: {channel.Id}]");
return Task.FromResult(RequestResult.Successful(all, notifyClientsOnAccount: false));
}
private class GroupDetails
{
public required Group Group { get; set; }
public required IEnumerable<GroupChatter> Chatters { get; set; }
}
}
}