about summary refs log tree commit diff
path: root/Tests/LibMatrix.HomeserverEmulator/Controllers/Rooms/RoomStateController.cs
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2024-09-17 04:26:25 +0200
committerRory& <root@rory.gay>2024-09-17 04:26:25 +0200
commit37a8ac420278fd53ab8218956f1ba13692feb48e (patch)
tree83afec51130a254f6ed0ba11c45975f3f2ba8b9f /Tests/LibMatrix.HomeserverEmulator/Controllers/Rooms/RoomStateController.cs
parentDrop example bots (diff)
parentMove around some projects, further cleanup pending (diff)
downloadLibMatrix-bak-37a8ac420278fd53ab8218956f1ba13692feb48e.tar.xz
Merge remote-tracking branch 'origin/dev/project-cleanup'
Diffstat (limited to 'Tests/LibMatrix.HomeserverEmulator/Controllers/Rooms/RoomStateController.cs')
-rw-r--r--Tests/LibMatrix.HomeserverEmulator/Controllers/Rooms/RoomStateController.cs113
1 files changed, 0 insertions, 113 deletions
diff --git a/Tests/LibMatrix.HomeserverEmulator/Controllers/Rooms/RoomStateController.cs b/Tests/LibMatrix.HomeserverEmulator/Controllers/Rooms/RoomStateController.cs
deleted file mode 100644

index 74c70a3..0000000 --- a/Tests/LibMatrix.HomeserverEmulator/Controllers/Rooms/RoomStateController.cs +++ /dev/null
@@ -1,113 +0,0 @@ -using System.Collections.Frozen; -using System.Text.Json.Nodes; -using LibMatrix.HomeserverEmulator.Extensions; -using LibMatrix.HomeserverEmulator.Services; -using Microsoft.AspNetCore.Mvc; - -namespace LibMatrix.HomeserverEmulator.Controllers.Rooms; - -[ApiController] -[Route("/_matrix/client/{version}/rooms/{roomId}/state")] -public class RoomStateController(ILogger<RoomStateController> logger, TokenService tokenService, UserStore userStore, RoomStore roomStore) : ControllerBase { - [HttpGet("")] - public async Task<FrozenSet<StateEventResponse>> GetState(string roomId) { - var token = tokenService.GetAccessTokenOrNull(HttpContext); - if (token == null) - throw new MatrixException() { - ErrorCode = "M_MISSING_TOKEN", - Error = "Missing token" - }; - - var user = await userStore.GetUserByToken(token); - if (user == null) - throw new MatrixException() { - ErrorCode = "M_UNKNOWN_TOKEN", - Error = "No such user" - }; - - var room = roomStore.GetRoomById(roomId); - if (room == null) - throw new MatrixException() { - ErrorCode = "M_NOT_FOUND", - Error = "Room not found" - }; - - return room.State; - } - - [HttpGet("{eventType}")] - public async Task<object?> GetState(string roomId, string eventType, [FromQuery] string format = "client") { - return await GetState(roomId, eventType, "", format); - } - - [HttpGet("{eventType}/{stateKey}")] - public async Task<object?> GetState(string roomId, string eventType, string stateKey, [FromQuery] string format = "client") { - var token = tokenService.GetAccessTokenOrNull(HttpContext); - if (token == null) - throw new MatrixException() { - ErrorCode = "M_MISSING_TOKEN", - Error = "Missing token" - }; - - var user = await userStore.GetUserByToken(token); - if (user == null) - throw new MatrixException() { - ErrorCode = "M_UNKNOWN_TOKEN", - Error = "No such user" - }; - - var room = roomStore.GetRoomById(roomId); - if (room == null) - throw new MatrixException() { - ErrorCode = "M_NOT_FOUND", - Error = "Room not found" - }; - - var stateEvent = room.State.FirstOrDefault(x => x.Type == eventType && x.StateKey == stateKey); - if (stateEvent == null) { - Console.WriteLine($"Event not found in room {roomId} matching {eventType}/{stateKey}"); - throw new MatrixException() { - ErrorCode = "M_NOT_FOUND", - Error = "Event not found" - }; - } - - // return stateEvent; - return format == "event" ? stateEvent : stateEvent.RawContent; - } - - [HttpPut("{eventType}")] - public async Task<EventIdResponse> SetState(string roomId, string eventType, [FromBody] JsonObject? request) { - return await SetState(roomId, eventType, "", request); - } - - [HttpPut("{eventType}/{stateKey}")] - public async Task<EventIdResponse> SetState(string roomId, string eventType, string stateKey, [FromBody] JsonObject? request) { - var token = tokenService.GetAccessTokenOrNull(HttpContext); - if (token == null) - throw new MatrixException() { - ErrorCode = "M_MISSING_TOKEN", - Error = "Missing token" - }; - - var user = await userStore.GetUserByToken(token); - if (user == null) - throw new MatrixException() { - ErrorCode = "M_UNKNOWN_TOKEN", - Error = "No such user" - }; - - var room = roomStore.GetRoomById(roomId); - if (room == null) - throw new MatrixException() { - ErrorCode = "M_NOT_FOUND", - Error = "Room not found" - }; - var evt = room.SetStateInternal(new StateEvent() { Type = eventType, StateKey = stateKey, RawContent = request }.ToStateEvent(user, room)); - evt.Type = eventType; - evt.StateKey = stateKey; - return new EventIdResponse() { - EventId = evt.EventId ?? throw new InvalidOperationException("EventId is null") - }; - } -} \ No newline at end of file