From 0fa768556aca00f4346ccd71917fad048def6323 Mon Sep 17 00:00:00 2001 From: Rory& Date: Thu, 30 May 2024 08:22:50 +0000 Subject: Move around some projects, further cleanup pending --- .../Controllers/Users/AccountDataController.cs | 68 ------------------ .../Controllers/Users/FilterController.cs | 46 ------------- .../Controllers/Users/ProfileController.cs | 52 -------------- .../Controllers/Users/UserController.cs | 80 ---------------------- 4 files changed, 246 deletions(-) delete mode 100644 Tests/LibMatrix.HomeserverEmulator/Controllers/Users/AccountDataController.cs delete mode 100644 Tests/LibMatrix.HomeserverEmulator/Controllers/Users/FilterController.cs delete mode 100644 Tests/LibMatrix.HomeserverEmulator/Controllers/Users/ProfileController.cs delete mode 100644 Tests/LibMatrix.HomeserverEmulator/Controllers/Users/UserController.cs (limited to 'Tests/LibMatrix.HomeserverEmulator/Controllers/Users') diff --git a/Tests/LibMatrix.HomeserverEmulator/Controllers/Users/AccountDataController.cs b/Tests/LibMatrix.HomeserverEmulator/Controllers/Users/AccountDataController.cs deleted file mode 100644 index a32d283..0000000 --- a/Tests/LibMatrix.HomeserverEmulator/Controllers/Users/AccountDataController.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System.Text.Json.Nodes; -using ArcaneLibs.Extensions; -using LibMatrix.EventTypes.Spec.State; -using LibMatrix.Filters; -using LibMatrix.HomeserverEmulator.Services; -using LibMatrix.Responses; -using Microsoft.AspNetCore.Mvc; - -namespace LibMatrix.HomeserverEmulator.Controllers; - -[ApiController] -[Route("/_matrix/client/{version}/")] -public class AccountDataController(ILogger logger, TokenService tokenService, UserStore userStore, RoomStore roomStore) : ControllerBase { - [HttpGet("user/{mxid}/account_data/{type}")] - public async Task GetAccountData(string type) { - var token = tokenService.GetAccessToken(HttpContext); - var user = await userStore.GetUserByToken(token, false); - if (user is null) - throw new MatrixException() { - ErrorCode = "M_UNAUTHORIZED", - Error = "Invalid token." - }; - - var value = user.AccountData.FirstOrDefault(x => x.Type == type); - if (value is null) - throw new MatrixException() { - ErrorCode = "M_NOT_FOUND", - Error = "Key not found." - }; - return value; - } - - [HttpPut("user/{mxid}/account_data/{type}")] - public async Task SetAccountData(string type, [FromBody] JsonObject data) { - var token = tokenService.GetAccessToken(HttpContext); - var user = await userStore.GetUserByToken(token, false); - if (user is null) - throw new MatrixException() { - ErrorCode = "M_UNAUTHORIZED", - Error = "Invalid token." - }; - - user.AccountData.Add(new() { - Type = type, - RawContent = data - }); - return data; - } - - // specialised account data... - [HttpGet("pushrules")] - public async Task GetPushRules() { - var token = tokenService.GetAccessToken(HttpContext); - if (token is null) - throw new MatrixException() { - ErrorCode = "M_UNAUTHORIZED", - Error = "No token passed." - }; - - var user = await userStore.GetUserByToken(token, false); - if (user is null) - throw new MatrixException() { - ErrorCode = "M_UNAUTHORIZED", - Error = "Invalid token." - }; - return new { }; - } -} \ No newline at end of file diff --git a/Tests/LibMatrix.HomeserverEmulator/Controllers/Users/FilterController.cs b/Tests/LibMatrix.HomeserverEmulator/Controllers/Users/FilterController.cs deleted file mode 100644 index bdee7bc..0000000 --- a/Tests/LibMatrix.HomeserverEmulator/Controllers/Users/FilterController.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System.Text.Json.Nodes; -using ArcaneLibs.Extensions; -using LibMatrix.EventTypes.Spec.State; -using LibMatrix.Filters; -using LibMatrix.HomeserverEmulator.Services; -using LibMatrix.Responses; -using Microsoft.AspNetCore.Mvc; - -namespace LibMatrix.HomeserverEmulator.Controllers; - -[ApiController] -[Route("/_matrix/client/{version}/")] -public class FilterController(ILogger logger, TokenService tokenService, UserStore userStore, RoomStore roomStore) : ControllerBase { - [HttpPost("user/{mxid}/filter")] - public async Task CreateFilter(string mxid, [FromBody] SyncFilter filter) { - var token = tokenService.GetAccessToken(HttpContext); - var user = await userStore.GetUserByToken(token, false); - if (user is null) - throw new MatrixException() { - ErrorCode = "M_UNAUTHORIZED", - Error = "Invalid token." - }; - var filterId = Guid.NewGuid().ToString(); - user.Filters[filterId] = filter; - return new { - filter_id = filterId - }; - } - - [HttpGet("user/{mxid}/filter/{filterId}")] - public async Task GetFilter(string mxid, string filterId) { - var token = tokenService.GetAccessToken(HttpContext); - var user = await userStore.GetUserByToken(token, false); - if (user is null) - throw new MatrixException() { - ErrorCode = "M_UNAUTHORIZED", - Error = "Invalid token." - }; - if (!user.Filters.ContainsKey(filterId)) - throw new MatrixException() { - ErrorCode = "M_NOT_FOUND", - Error = "Filter not found." - }; - return user.Filters[filterId]; - } -} \ No newline at end of file diff --git a/Tests/LibMatrix.HomeserverEmulator/Controllers/Users/ProfileController.cs b/Tests/LibMatrix.HomeserverEmulator/Controllers/Users/ProfileController.cs deleted file mode 100644 index 98c41da..0000000 --- a/Tests/LibMatrix.HomeserverEmulator/Controllers/Users/ProfileController.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System.Text.Json.Nodes; -using ArcaneLibs.Extensions; -using LibMatrix.EventTypes.Spec.State; -using LibMatrix.Filters; -using LibMatrix.HomeserverEmulator.Services; -using LibMatrix.Responses; -using Microsoft.AspNetCore.Mvc; - -namespace LibMatrix.HomeserverEmulator.Controllers; - -[ApiController] -[Route("/_matrix/client/{version}/")] -public class ProfileController(ILogger logger, TokenService tokenService, UserStore userStore, RoomStore roomStore) : ControllerBase { - [HttpGet("profile/{userId}")] - public async Task> GetProfile(string userId) { - var user = await userStore.GetUserById(userId, false); - if (user is null) - throw new MatrixException() { - ErrorCode = "M_NOT_FOUND", - Error = "User not found." - }; - return user.Profile; - } - - [HttpGet("profile/{userId}/{key}")] - public async Task GetProfile(string userId, string key) { - var user = await userStore.GetUserById(userId, false); - if (user is null) - throw new MatrixException() { - ErrorCode = "M_NOT_FOUND", - Error = "User not found." - }; - if (!user.Profile.TryGetValue(key, out var value)) - throw new MatrixException() { - ErrorCode = "M_NOT_FOUND", - Error = "Key not found." - }; - return value; - } - - [HttpPut("profile/{userId}/{key}")] - public async Task SetProfile(string userId, string key, [FromBody] JsonNode value) { - var user = await userStore.GetUserById(userId, false); - if (user is null) - throw new MatrixException() { - ErrorCode = "M_NOT_FOUND", - Error = "User not found." - }; - user.Profile[key] = value[key]?.AsObject(); - return value; - } -} \ No newline at end of file diff --git a/Tests/LibMatrix.HomeserverEmulator/Controllers/Users/UserController.cs b/Tests/LibMatrix.HomeserverEmulator/Controllers/Users/UserController.cs deleted file mode 100644 index 2be3896..0000000 --- a/Tests/LibMatrix.HomeserverEmulator/Controllers/Users/UserController.cs +++ /dev/null @@ -1,80 +0,0 @@ -using System.Text.Json.Nodes; -using System.Text.Json.Serialization; -using ArcaneLibs.Extensions; -using LibMatrix.EventTypes.Spec.State; -using LibMatrix.Filters; -using LibMatrix.HomeserverEmulator.Services; -using LibMatrix.Responses; -using Microsoft.AspNetCore.Mvc; - -namespace LibMatrix.HomeserverEmulator.Controllers; - -[ApiController] -[Route("/_matrix/client/{version}/")] -public class UserController(ILogger logger, TokenService tokenService, UserStore userStore, RoomStore roomStore) : ControllerBase { - [HttpGet("account/whoami")] - public async Task Login() { - var token = tokenService.GetAccessToken(HttpContext); - var user = await userStore.GetUserByToken(token, Random.Shared.Next(101) <= 10, tokenService.GenerateServerName(HttpContext)); - if (user is null) - throw new MatrixException() { - ErrorCode = "M_UNKNOWN_TOKEN", - Error = "Invalid token." - }; - var whoAmIResponse = new WhoAmIResponse { - UserId = user.UserId - }; - return whoAmIResponse; - } - - [HttpGet("joined_rooms")] - public async Task GetJoinedRooms() { - var token = tokenService.GetAccessToken(HttpContext); - var user = await userStore.GetUserByToken(token, false); - if (user is null) - throw new MatrixException() { - ErrorCode = "M_UNAUTHORIZED", - Error = "Invalid token." - }; - // return user.JoinedRooms; - - return new { - joined_rooms = roomStore._rooms.Where(r => - r.State.Any(s => s.StateKey == user.UserId && s.Type == RoomMemberEventContent.EventId && (s.TypedContent as RoomMemberEventContent).Membership == "join") - ).Select(r => r.RoomId).ToList() - }; - } - - [HttpGet("devices")] - public async Task GetDevices() { - var token = tokenService.GetAccessToken(HttpContext); - var user = await userStore.GetUserByToken(token, false); - if (user is null) - throw new MatrixException() { - ErrorCode = "M_UNAUTHORIZED", - Error = "Invalid token." - }; - return new() { - Devices = user.AccessTokens.Select(x=>new DevicesResponse.Device() { - DeviceId = x.Value.DeviceId, - DisplayName = x.Value.DeviceId - }).ToList() - }; - } - - public class DevicesResponse { - [JsonPropertyName("devices")] - public List Devices { get; set; } - - public class Device { - [JsonPropertyName("device_id")] - public string DeviceId { get; set; } - [JsonPropertyName("display_name")] - public string DisplayName { get; set; } - [JsonPropertyName("last_seen_ip")] - public string LastSeenIp { get; set; } - [JsonPropertyName("last_seen_ts")] - public long LastSeenTs { get; set; } - } - } -} \ No newline at end of file -- cgit 1.4.1