using System.Text.Json; using MauMau_Server.Websockets; using Microsoft.AspNetCore.Mvc; namespace MauMau_Server.Controllers; [ApiController] [Route("[controller]")] public class RoomController : ControllerBase { private readonly ILogger _logger; private readonly IRoomManager _roomManager; public RoomController(ILogger logger, IRoomManager roomManager) { _logger = logger; _roomManager = roomManager; } [HttpGet] public IActionResult GetAll() { var rooms = _roomManager.GetAllRooms(); return Ok(rooms); } [HttpGet("{id}")] public async Task ConnectToRoom(string id) { if (!HttpContext.WebSockets.IsWebSocketRequest) { HttpContext.Response.StatusCode = 400; return; } if (!_roomManager.RoomExists(id)) { HttpContext.Response.StatusCode = 404; return; } using var webSocket = await HttpContext.WebSockets.AcceptWebSocketAsync(); var room = _roomManager.GetRoom(id); await room.InstantiateConnection(webSocket); } [HttpPost] public IActionResult Post() { var id = _roomManager.CreateRoom(); return Ok(JsonSerializer.Serialize(id)); } }