From 58d5674ec7c174aebcbfdb588caea51bd9825a54 Mon Sep 17 00:00:00 2001 From: CyberL1 Date: Sun, 19 May 2024 11:39:41 +0200 Subject: [PATCH] feat: configute page should use cache --- MyMcRealms/Controllers/InvitesController.cs | 18 +++++++++++------- MyMcRealms/Controllers/OpsController.cs | 14 +++++++++----- MyMcRealms/Controllers/WorldsController.cs | 15 +++++++++------ .../MyMcAPI/Responses/WhitelistReponse.cs | 11 +++++++++++ MyMcRealms/MyMcAPI/Wrapper.cs | 16 ++++++++++++++++ 5 files changed, 56 insertions(+), 18 deletions(-) create mode 100644 MyMcRealms/MyMcAPI/Responses/WhitelistReponse.cs diff --git a/MyMcRealms/Controllers/InvitesController.cs b/MyMcRealms/Controllers/InvitesController.cs index 808c4d6..601eef3 100644 --- a/MyMcRealms/Controllers/InvitesController.cs +++ b/MyMcRealms/Controllers/InvitesController.cs @@ -22,18 +22,20 @@ namespace MyMcRealms.Controllers var world = (await _api.GetAllServers()).Servers[wId]; if (world == null) return NotFound("World not found"); + + var api = new MyMcAPI.Wrapper(world.OwnersToken); + var whitelist = await api.GetWhitelist(); // Get player name var playerInfo = await new HttpClient().GetFromJsonAsync($"https://api.mojang.com/users/profiles/minecraft/{body.Name}"); - if (world.Whitelist.Any(p => p.Name == body.Name)) return BadRequest("Player already whitelisted"); + if (whitelist.Result.Any(p => p.Name == body.Name)) return BadRequest("Player already whitelisted"); - var api = new MyMcAPI.Wrapper(world.OwnersToken); api.ExecuteCommand($"whitelist add {body.Name}"); List whitelistedPlayers = []; - foreach (var player in world.Whitelist) + foreach (var player in whitelist.Result) { PlayerResponse whitelistedPlayer = new() { @@ -67,7 +69,7 @@ namespace MyMcRealms.Controllers OwnerUUID = "blank", Name = "blank", Motd = world.Motd, - State = world.WhitelistEnable ? "CLOSED" : "OPEN", + State = whitelist.Enabled ? "CLOSED" : "OPEN", WorldType = "NORMAL", MaxPlayers = 10, MinigameId = null, @@ -93,14 +95,16 @@ namespace MyMcRealms.Controllers if (world == null) return NotFound("World not found"); - var player = world.Whitelist.Find(p => p.Uuid.Replace("-", "") == uuid); + var api = new MyMcAPI.Wrapper(world.OwnersToken); + var whitelist = await api.GetWhitelist(); + + var player = whitelist.Result.Find(p => p.Uuid.Replace("-", "") == uuid); // Get player name var playerInfo = await new HttpClient().GetFromJsonAsync($"https://sessionserver.mojang.com/session/minecraft/profile/{uuid}"); - if (!world.Whitelist.Any(p => p.Uuid.Replace("-", "") == uuid)) return BadRequest("Player not whitelisted"); + if (!whitelist.Result.Any(p => p.Uuid.Replace("-", "") == uuid)) return BadRequest("Player not whitelisted"); - var api = new MyMcAPI.Wrapper(world.OwnersToken); api.ExecuteCommand($"whitelist remove {player.Name}"); return Ok(true); diff --git a/MyMcRealms/Controllers/OpsController.cs b/MyMcRealms/Controllers/OpsController.cs index 0d28680..e538e98 100644 --- a/MyMcRealms/Controllers/OpsController.cs +++ b/MyMcRealms/Controllers/OpsController.cs @@ -14,10 +14,12 @@ namespace MyMcRealms.Controllers { var _api = new MyMcAPI.Wrapper(Environment.GetEnvironmentVariable("MYMC_API_KEY")); var world = (await _api.GetAllServers()).Servers[wId]; + var api = new MyMcAPI.Wrapper(world.OwnersToken); + var whitelist = await api.GetWhitelist(); - var ops = world.Ops; - var player = world.Whitelist.Find(p => p.Uuid.Replace("-", "") == uuid); + var ops = whitelist.Ops; + var player = whitelist.Result.Find(p => p.Uuid.Replace("-", "") == uuid); List opNames = []; @@ -42,10 +44,12 @@ namespace MyMcRealms.Controllers { var _api = new MyMcAPI.Wrapper(Environment.GetEnvironmentVariable("MYMC_API_KEY")); var world = (await _api.GetAllServers()).Servers[wId]; - var api = new MyMcAPI.Wrapper(world.OwnersToken); - var ops = world.Ops; - var player = world.Whitelist.Find(p => p.Uuid.Replace("-", "") == uuid); + var api = new MyMcAPI.Wrapper(world.OwnersToken); + var whitelist = await api.GetWhitelist(); + + var ops = whitelist.Ops; + var player = whitelist.Result.Find(p => p.Uuid.Replace("-", "") == uuid); List opNames = []; diff --git a/MyMcRealms/Controllers/WorldsController.cs b/MyMcRealms/Controllers/WorldsController.cs index f980a6a..602f163 100644 --- a/MyMcRealms/Controllers/WorldsController.cs +++ b/MyMcRealms/Controllers/WorldsController.cs @@ -83,15 +83,18 @@ namespace MyMcRealms.Controllers [HttpGet("{id}")] public async Task> GetWorldById(int id) { - var worlds = await new MyMcAPI.Wrapper(Environment.GetEnvironmentVariable("MYMC_API_KEY")).GetAllServers(); - var world = worlds.Servers[id]; + var _api = new MyMcAPI.Wrapper(Environment.GetEnvironmentVariable("MYMC_API_KEY")); + + var world = (await _api.GetAllServers()).Servers[id]; + var api = new MyMcAPI.Wrapper(world.OwnersToken); + var whitelist = await api.GetWhitelist(); string worldOwnerName = world.Ops.ToArray().Length == 0 ? "Owner" : world.Ops[0].Name; string worldOwnerUuid = world.Ops.ToArray().Length == 0 ? "069a79f444e94726a5befca90e38aaf5" : world.Ops[0].Uuid; string worldName = world.Ops.ToArray().Length == 0 ? world.ServerName : $"{world.Ops[0].Name}'s server"; List whitelistedPlayers = []; - foreach (var player in world.Whitelist) + foreach (var player in whitelist.Result) { PlayerResponse whitelistedPlayer = new() { @@ -99,8 +102,8 @@ namespace MyMcRealms.Controllers Uuid = player.Uuid, Accepted = true, Online = false, - Operator = world.Ops.Find(p => p.Name == player.Name) != null, - Permission = world.Ops.Find(p => p.Name == player.Name) != null ? "OPERATOR" : "MEMBER", + Operator = whitelist.Ops.Find(p => p.Name == player.Name) != null, + Permission = whitelist.Ops.Find(p => p.Name == player.Name) != null ? "OPERATOR" : "MEMBER", }; whitelistedPlayers.Add(whitelistedPlayer); @@ -113,7 +116,7 @@ namespace MyMcRealms.Controllers OwnerUUID = worldOwnerUuid, Name = worldName, Motd = world.Motd, - State = world.WhitelistEnable ? "CLOSED" : "OPEN", + State = whitelist.Enabled ? "CLOSED" : "OPEN", WorldType = "NORMAL", MaxPlayers = 10, MinigameId = null, diff --git a/MyMcRealms/MyMcAPI/Responses/WhitelistReponse.cs b/MyMcRealms/MyMcAPI/Responses/WhitelistReponse.cs new file mode 100644 index 0000000..24a9383 --- /dev/null +++ b/MyMcRealms/MyMcAPI/Responses/WhitelistReponse.cs @@ -0,0 +1,11 @@ +namespace MyMcRealms.MyMcAPI.Responses +{ + public class WhitelistReponse + { + public bool Success { get; set; } + public string Message { get; set; } = null!; + public List Result { get; set; } = null!; + public bool Enabled { get; set; } + public List Ops { get; set; } = null!; + } +} \ No newline at end of file diff --git a/MyMcRealms/MyMcAPI/Wrapper.cs b/MyMcRealms/MyMcAPI/Wrapper.cs index b9d63f0..3020323 100644 --- a/MyMcRealms/MyMcAPI/Wrapper.cs +++ b/MyMcRealms/MyMcAPI/Wrapper.cs @@ -44,5 +44,21 @@ namespace MyMcRealms.MyMcAPI return response; } + + public async Task GetWhitelist() + { + try + { + WhitelistReponse? response = await httpClient.GetFromJsonAsync($"whitelist"); + + return response; + } + catch (Exception e) + { + Console.WriteLine("error while doing GET /whitelist"); + Console.WriteLine(e.Message); + return null; + } + } } }