From 3939f68e250e0eb051fa4fc3ca13c289f33d1f2a Mon Sep 17 00:00:00 2001 From: eeoooue Date: Fri, 23 May 2025 14:07:39 +0100 Subject: [PATCH 1/7] Create IResetCubeStrategy.cs --- .../ResetCubeStrategies/IResetCubeStrategy.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 Solution/LibCubeIntegration/ResetCubeStrategies/IResetCubeStrategy.cs diff --git a/Solution/LibCubeIntegration/ResetCubeStrategies/IResetCubeStrategy.cs b/Solution/LibCubeIntegration/ResetCubeStrategies/IResetCubeStrategy.cs new file mode 100644 index 0000000..6244ed5 --- /dev/null +++ b/Solution/LibCubeIntegration/ResetCubeStrategies/IResetCubeStrategy.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LibCubeIntegration.ResetCubeStrategies +{ + internal interface IResetCubeStrategy + { + public Task ResetCubeAsync(); + } +} From 5579eee6f118d76a8a7f5555f520cc286c588aa2 Mon Sep 17 00:00:00 2001 From: eeoooue Date: Fri, 23 May 2025 14:07:44 +0100 Subject: [PATCH 2/7] Create ResetCubeViaAPIStrategy.cs --- .../ResetCubeViaAPIStrategy.cs | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 Solution/LibCubeIntegration/ResetCubeStrategies/ResetCubeViaAPIStrategy.cs diff --git a/Solution/LibCubeIntegration/ResetCubeStrategies/ResetCubeViaAPIStrategy.cs b/Solution/LibCubeIntegration/ResetCubeStrategies/ResetCubeViaAPIStrategy.cs new file mode 100644 index 0000000..61c5165 --- /dev/null +++ b/Solution/LibCubeIntegration/ResetCubeStrategies/ResetCubeViaAPIStrategy.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LibCubeIntegration.ResetCubeStrategies +{ + internal class ResetCubeViaAPIStrategy : IResetCubeStrategy + { + private string ServerAddress; + static readonly HttpClient Client = new(); + + public ResetCubeViaAPIStrategy(string serviceName = "CubeService") + { + ServerAddress = NetworkingConfiguration.GetFullAddressForServer(serviceName); + } + + public async Task ResetCubeAsync() + { + var requestUri = $"{ServerAddress}/api/Cube/Reset"; + var response = await Client.PostAsync(requestUri, null); + return response.IsSuccessStatusCode; + } + } +} From 715c38ed81960696a5f195de60dcba18aeaabc07 Mon Sep 17 00:00:00 2001 From: eeoooue Date: Fri, 23 May 2025 14:17:21 +0100 Subject: [PATCH 3/7] Update IResetCubeStrategy.cs --- .../ResetCubeStrategies/IResetCubeStrategy.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Solution/LibCubeIntegration/ResetCubeStrategies/IResetCubeStrategy.cs b/Solution/LibCubeIntegration/ResetCubeStrategies/IResetCubeStrategy.cs index 6244ed5..0a5c3ec 100644 --- a/Solution/LibCubeIntegration/ResetCubeStrategies/IResetCubeStrategy.cs +++ b/Solution/LibCubeIntegration/ResetCubeStrategies/IResetCubeStrategy.cs @@ -6,7 +6,7 @@ namespace LibCubeIntegration.ResetCubeStrategies { - internal interface IResetCubeStrategy + public interface IResetCubeStrategy { public Task ResetCubeAsync(); } From 8c420a5e33ecfe93afe8704e72dcf03ae68cb5c0 Mon Sep 17 00:00:00 2001 From: eeoooue Date: Fri, 23 May 2025 14:17:25 +0100 Subject: [PATCH 4/7] Update ResetCubeViaAPIStrategy.cs --- .../ResetCubeStrategies/ResetCubeViaAPIStrategy.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Solution/LibCubeIntegration/ResetCubeStrategies/ResetCubeViaAPIStrategy.cs b/Solution/LibCubeIntegration/ResetCubeStrategies/ResetCubeViaAPIStrategy.cs index 61c5165..be6aabf 100644 --- a/Solution/LibCubeIntegration/ResetCubeStrategies/ResetCubeViaAPIStrategy.cs +++ b/Solution/LibCubeIntegration/ResetCubeStrategies/ResetCubeViaAPIStrategy.cs @@ -6,7 +6,7 @@ namespace LibCubeIntegration.ResetCubeStrategies { - internal class ResetCubeViaAPIStrategy : IResetCubeStrategy + public class ResetCubeViaAPIStrategy : IResetCubeStrategy { private string ServerAddress; static readonly HttpClient Client = new(); From 5de712688bbd932b4a3f2b099bade98041187708 Mon Sep 17 00:00:00 2001 From: eeoooue Date: Fri, 23 May 2025 14:17:42 +0100 Subject: [PATCH 5/7] admin panel uses CubeResetStrategy to talk to CubeService --- Solution/AdminPanel/AdminPanel.csproj | 4 ++++ Solution/AdminPanel/MainWindow.xaml | 2 +- Solution/AdminPanel/MainWindow.xaml.cs | 11 ++++++++++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Solution/AdminPanel/AdminPanel.csproj b/Solution/AdminPanel/AdminPanel.csproj index e3e33e3..7b1d5f5 100644 --- a/Solution/AdminPanel/AdminPanel.csproj +++ b/Solution/AdminPanel/AdminPanel.csproj @@ -8,4 +8,8 @@ true + + + + diff --git a/Solution/AdminPanel/MainWindow.xaml b/Solution/AdminPanel/MainWindow.xaml index 1eb7b98..dd28584 100644 --- a/Solution/AdminPanel/MainWindow.xaml +++ b/Solution/AdminPanel/MainWindow.xaml @@ -10,7 +10,7 @@ - + diff --git a/Solution/AdminPanel/MainWindow.xaml.cs b/Solution/AdminPanel/MainWindow.xaml.cs index e0d44f6..54c58be 100644 --- a/Solution/AdminPanel/MainWindow.xaml.cs +++ b/Solution/AdminPanel/MainWindow.xaml.cs @@ -1,4 +1,6 @@ -using System.Text; +using LibCubeIntegration.GetCubeStrategies; +using LibCubeIntegration.ResetCubeStrategies; +using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; @@ -16,9 +18,16 @@ namespace AdminPanel /// public partial class MainWindow : Window { + private IResetCubeStrategy ResetStrategy = new ResetCubeViaAPIStrategy("CubeService"); + public MainWindow() { InitializeComponent(); } + + private async void Reset_Click(object sender, RoutedEventArgs e) + { + await ResetStrategy.ResetCubeAsync(); + } } } \ No newline at end of file From 0aae911b03a9d7a65935f8c6666d3931d5be1374 Mon Sep 17 00:00:00 2001 From: eeoooue Date: Fri, 23 May 2025 14:19:26 +0100 Subject: [PATCH 6/7] CubeProxy now routes any Reset requests to CubeService --- Solution/CubeProxy/Controllers/CubeController.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Solution/CubeProxy/Controllers/CubeController.cs b/Solution/CubeProxy/Controllers/CubeController.cs index 4f752c0..d1ac2c3 100644 --- a/Solution/CubeProxy/Controllers/CubeController.cs +++ b/Solution/CubeProxy/Controllers/CubeController.cs @@ -1,4 +1,5 @@ -using LibCubeIntegration.Services; +using LibCubeIntegration.ResetCubeStrategies; +using LibCubeIntegration.Services; using LibNetCube; using Microsoft.AspNetCore.Mvc; @@ -10,10 +11,12 @@ namespace CubeProxy.Controllers public class CubeController : Controller { readonly CubeServiceFacade _cubeService = new CubeServiceFacade("CubeService"); + readonly IResetCubeStrategy ResetStrategy = new ResetCubeViaAPIStrategy("CubeService"); [HttpPost("[action]")] - public IActionResult Reset() + public async Task Reset() { + await ResetStrategy.ResetCubeAsync(); return Ok(); } From ce09368906ce8e613eb3f84a77ec91fa1dee3b74 Mon Sep 17 00:00:00 2001 From: eeoooue Date: Fri, 23 May 2025 14:19:44 +0100 Subject: [PATCH 7/7] AdminPanel now connects to CubeProxy --- Solution/AdminPanel/MainWindow.xaml.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Solution/AdminPanel/MainWindow.xaml.cs b/Solution/AdminPanel/MainWindow.xaml.cs index 54c58be..c81e166 100644 --- a/Solution/AdminPanel/MainWindow.xaml.cs +++ b/Solution/AdminPanel/MainWindow.xaml.cs @@ -18,7 +18,7 @@ namespace AdminPanel /// public partial class MainWindow : Window { - private IResetCubeStrategy ResetStrategy = new ResetCubeViaAPIStrategy("CubeService"); + private IResetCubeStrategy ResetStrategy = new ResetCubeViaAPIStrategy("CubeProxy"); public MainWindow() {