33 lines
No EOL
1.1 KiB
C#
33 lines
No EOL
1.1 KiB
C#
using Insight.Agent.Services;
|
|
using Insight.Domain.Interfaces;
|
|
using Insight.Domain.Network;
|
|
using Insight.Domain.Network.Agent.Messages;
|
|
|
|
namespace Insight.Agent.Network.Handlers;
|
|
|
|
public class CustomHandler(ScriptService scriptService) : IMessageHandler<AgentSession>
|
|
{
|
|
private readonly ScriptService _scriptService = scriptService;
|
|
|
|
public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
|
|
{
|
|
switch (message)
|
|
{
|
|
case Request request:
|
|
await OnRequestAsync(sender, request, cancellationToken);
|
|
break;
|
|
}
|
|
}
|
|
|
|
private async ValueTask OnRequestAsync(AgentSession sender, Request request, CancellationToken cancellationToken)
|
|
{
|
|
if (request.RequestData is null) return;
|
|
var result = await _scriptService.QueryAsync(request.RequestData);
|
|
|
|
await sender.SendAsync(new Response(request)
|
|
{
|
|
ResponseData = result.HadErrors ? result.Errors : result.Data,
|
|
ResponseError = result.HadErrors
|
|
}, cancellationToken);
|
|
}
|
|
} |