diff options
author | Rory& <root@rory.gay> | 2024-05-30 08:22:50 +0000 |
---|---|---|
committer | Rory& <root@rory.gay> | 2024-05-30 08:22:50 +0000 |
commit | 0fa768556aca00f4346ccd71917fad048def6323 (patch) | |
tree | e6835af94759eac7814aa6d1c718d98d37dfc4a9 /Tests/LibMatrix.HomeserverEmulator/Controllers/Rooms/RoomsController.cs | |
parent | Log warning if registering a duplicate type (diff) | |
download | LibMatrix-0fa768556aca00f4346ccd71917fad048def6323.tar.xz |
Move around some projects, further cleanup pending github/dev/project-cleanup dev/project-cleanup
Diffstat (limited to 'Tests/LibMatrix.HomeserverEmulator/Controllers/Rooms/RoomsController.cs')
-rw-r--r-- | Tests/LibMatrix.HomeserverEmulator/Controllers/Rooms/RoomsController.cs | 139 |
1 files changed, 0 insertions, 139 deletions
diff --git a/Tests/LibMatrix.HomeserverEmulator/Controllers/Rooms/RoomsController.cs b/Tests/LibMatrix.HomeserverEmulator/Controllers/Rooms/RoomsController.cs deleted file mode 100644 index c24e6e9..0000000 --- a/Tests/LibMatrix.HomeserverEmulator/Controllers/Rooms/RoomsController.cs +++ /dev/null @@ -1,139 +0,0 @@ -using System.Text.Json.Serialization; -using LibMatrix.EventTypes.Spec.State; -using LibMatrix.EventTypes.Spec.State.RoomInfo; -using LibMatrix.HomeserverEmulator.Services; -using LibMatrix.Responses; -using LibMatrix.RoomTypes; -using Microsoft.AspNetCore.Mvc; - -namespace LibMatrix.HomeserverEmulator.Controllers.Rooms; - -[ApiController] -[Route("/_matrix/client/{version}/")] -public class RoomsController(ILogger<RoomsController> logger, TokenService tokenService, UserStore userStore, RoomStore roomStore) : ControllerBase { - //createRoom - [HttpPost("createRoom")] - public async Task<RoomIdResponse> CreateRoom([FromBody] CreateRoomRequest 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 = new RoomStore.Room($"!{Guid.NewGuid()}:{tokenService.GenerateServerName(HttpContext)}"); - var room = roomStore.CreateRoom(request, user); - - return new() { - RoomId = room.RoomId - }; - } - - [HttpPost("rooms/{roomId}/upgrade")] - public async Task<object> UpgradeRoom(string roomId, [FromBody] UpgradeRoomRequest 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 oldRoom = roomStore.GetRoomById(roomId); - if (oldRoom == null) - throw new MatrixException() { - ErrorCode = "M_NOT_FOUND", - Error = "Room not found" - }; - - var room = new RoomStore.Room($"!{Guid.NewGuid()}:{tokenService.GenerateServerName(HttpContext)}"); - - var eventTypesToTransfer = new[] { - RoomServerACLEventContent.EventId, - RoomEncryptionEventContent.EventId, - RoomNameEventContent.EventId, - RoomAvatarEventContent.EventId, - RoomTopicEventContent.EventId, - RoomGuestAccessEventContent.EventId, - RoomHistoryVisibilityEventContent.EventId, - RoomJoinRulesEventContent.EventId, - RoomPowerLevelEventContent.EventId, - }; - - var createEvent = room.SetStateInternal(new() { - Type = RoomCreateEventContent.EventId, - RawContent = new() { - ["creator"] = user.UserId - } - }); - - oldRoom.State.Where(x => eventTypesToTransfer.Contains(x.Type)).ToList().ForEach(x => room.SetStateInternal(x)); - - room.AddUser(user.UserId); - - // user.Rooms.Add(room.RoomId, room); - return new { - replacement_room = room.RoomId - }; - } - - public class ReasonBody { - [JsonPropertyName("reason")] - public string? Reason { get; set; } - } - [HttpPost("rooms/{roomId}/leave")] // TODO: implement - public async Task<object> LeaveRoom(string roomId, [FromBody] ReasonBody body) { - 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" - }; - - room.SetStateInternal(new() { - Type = RoomMemberEventContent.EventId, - TypedContent = new RoomMemberEventContent() { - Membership = "leave", - Reason = body.Reason - }, - StateKey = user.UserId - }); - - logger.LogTrace($"User {user.UserId} left room {room.RoomId}"); - return new { - room_id = room.RoomId - }; - } -} - -public class UpgradeRoomRequest { - [JsonPropertyName("new_version")] - public required string NewVersion { get; set; } -} \ No newline at end of file |