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) { if (_roomManager.RoomExists(id)) { using var webSocket = await HttpContext.WebSockets.AcceptWebSocketAsync(); var room = _roomManager.GetRoom(id); await room.InstantiateConnection(webSocket); } else { HttpContext.Response.StatusCode = 404; } } else { HttpContext.Response.StatusCode = 400; } } [HttpPost] public IActionResult Post() { var id = _roomManager.CreateRoom(); return Ok(id); } [HttpDelete] public IActionResult Delete() { _roomManager.RemoveAllRooms(); return NoContent(); } }