43 lines
1.4 KiB
C#
43 lines
1.4 KiB
C#
using MareSynchronos.API.SignalR;
|
|
using MareSynchronosServer.Hubs;
|
|
using MareSynchronosShared.Utils;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.SignalR;
|
|
|
|
namespace MareSynchronosServer.Controllers;
|
|
|
|
[Route("/msgc")]
|
|
[Authorize(Policy = "Internal")]
|
|
public class ClientMessageController : Controller
|
|
{
|
|
private ILogger<ClientMessageController> _logger;
|
|
private IHubContext<MareHub, IMareHub> _hubContext;
|
|
|
|
public ClientMessageController(ILogger<ClientMessageController> logger, IHubContext<MareHub, IMareHub> hubContext)
|
|
{
|
|
_logger = logger;
|
|
_hubContext = hubContext;
|
|
}
|
|
|
|
[Route("sendMessage")]
|
|
[HttpPost]
|
|
public async Task<IActionResult> SendMessage([FromBody] ClientMessage msg)
|
|
{
|
|
bool hasUid = !string.IsNullOrEmpty(msg.UID);
|
|
|
|
if (!hasUid)
|
|
{
|
|
_logger.LogInformation("Sending Message of severity {severity} to all online users: {message}", msg.Severity, msg.Message);
|
|
await _hubContext.Clients.All.Client_ReceiveServerMessage(msg.Severity, msg.Message).ConfigureAwait(false);
|
|
}
|
|
else
|
|
{
|
|
_logger.LogInformation("Sending Message of severity {severity} to user {uid}: {message}", msg.Severity, msg.UID, msg.Message);
|
|
await _hubContext.Clients.User(msg.UID).Client_ReceiveServerMessage(msg.Severity, msg.Message).ConfigureAwait(false);
|
|
}
|
|
|
|
return Empty;
|
|
}
|
|
}
|