using System.Text.Json; using MauMau_Server.Room; 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}/{name}")] public async Task ConnectToRoom(string id, string name) { var response = HttpContext.Response; if (!HttpContext.WebSockets.IsWebSocketRequest) { response.StatusCode = 400; await response.BodyWriter.WriteAsync("Request is not a websocket request"u8.ToArray()); return; } if (!_roomManager.RoomExists(id)) { response.StatusCode = 404; await response.BodyWriter.WriteAsync("Room could not be found"u8.ToArray()); return; } using var webSocket = await HttpContext.WebSockets.AcceptWebSocketAsync(); var room = _roomManager.GetRoom(id); await room.InstantiateConnection(webSocket, name); } [HttpPost] public IActionResult Post() { var id = _roomManager.CreateRoom(); return Ok(JsonSerializer.Serialize(id)); } }