2
0
mirror of https://github.com/9ParsonsB/Pulsar.git synced 2025-07-01 08:23:42 -04:00

API & WebSocket now working

Can Read Status File & Broadcast contents via websocket
This commit is contained in:
2024-04-18 14:45:16 +10:00
parent aa368471fe
commit ac30d3cd2a
18 changed files with 345 additions and 383 deletions

View File

@ -4,7 +4,7 @@ using Observatory.Framework.Files;
using Observatory.Framework.Files.Journal;
using Microsoft.AspNetCore.SignalR;
public class EventsHub : Hub<IEventHub>
public class EventsHub : Hub<IEventsHub>
{
public async Task StatusUpdated(Observatory.Framework.Files.Status status) => await Clients.All.StatusUpdated(status);
@ -27,7 +27,7 @@ public class EventsHub : Hub<IEventHub>
public async Task BackpackUpdated(BackpackFile backpack) => await Clients.All.BackpackUpdated(backpack);
}
public interface IEventHub
public interface IEventsHub
{
Task StatusUpdated(Observatory.Framework.Files.Status status);

View File

@ -1,12 +1,32 @@
using Microsoft.AspNetCore.SignalR;
namespace Pulsar.Features.Status;
[ApiController]
[Route("api/status")]
public class StatusController : Controller
public class StatusController(IOptions<PulsarConfiguration> pulsarOptions, IHubContext<EventsHub, IEventsHub> hub) : ControllerBase
{
[HttpGet]
public IActionResult Get()
public async Task<IActionResult> Get()
{
return Ok();
// TODO: put in service
var journalDir = pulsarOptions.Value.JournalDirectory;
var dir = new DirectoryInfo(journalDir);
if (!dir.Exists)
return Problem("Journal directory does not exist.");
var files = dir.GetFiles();
var statusFile = files.FirstOrDefault(f =>
string.Equals(f.Name, "status.json", StringComparison.InvariantCultureIgnoreCase));
if (statusFile == null)
return Problem("Status file not found.");
await using var file = System.IO.File.Open(statusFile.FullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
var status = await JsonSerializer.DeserializeAsync<Observatory.Framework.Files.Status>(file);
await hub.Clients.All.StatusUpdated(status);
return Ok(status);
}
}