Files
2025-07-28 19:39:29 +00:00

34 lines
1.2 KiB
C#

using Microsoft.AspNetCore.Http;
using SPTarkov.DI.Annotations;
using SPTarkov.Server.Core.Controllers;
using SPTarkov.Server.Core.DI;
using SPTarkov.Server.Core.Helpers;
using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Utils;
namespace SPTarkov.Server.Core.Routers.Serializers;
[Injectable]
public class NotifySerializer(NotifierController notifierController, JsonUtil jsonUtil, HttpServerHelper httpServerHelper) : ISerializer
{
public async Task Serialize(MongoId sessionID, HttpRequest req, HttpResponse resp, object? body)
{
var splittedUrl = req.Path.Value.Split("/");
var tmpSessionID = splittedUrl[^1].Split("?last_id")[0];
/*
* Take our array of JSON message objects and cast them to JSON strings, so that they can then
* be sent to client as NEWLINE separated strings... yup.
*/
await notifierController
.NotifyAsync(tmpSessionID)
.ContinueWith(messages => messages.Result.Select(message => string.Join("\n", jsonUtil.Serialize(message))))
.ContinueWith(text => httpServerHelper.SendTextJson(resp, text));
}
public bool CanHandle(string route)
{
return route.ToUpper() == "NOTIFY";
}
}