From f65502f3371133be36583083243bddbeb828b37d Mon Sep 17 00:00:00 2001 From: Stuart Ferguson Date: Sat, 18 Oct 2025 22:06:43 +0100 Subject: [PATCH 1/3] base http methods added to ClientProxy base --- ClientProxyBase/ClientProxyBase.cs | 115 ++++++++++++++++++++++++++++- 1 file changed, 113 insertions(+), 2 deletions(-) diff --git a/ClientProxyBase/ClientProxyBase.cs b/ClientProxyBase/ClientProxyBase.cs index 23de2c32..26a015ef 100644 --- a/ClientProxyBase/ClientProxyBase.cs +++ b/ClientProxyBase/ClientProxyBase.cs @@ -1,14 +1,17 @@ -using System; -using Newtonsoft.Json; +using Newtonsoft.Json; using SimpleResults; +using System; namespace ClientProxyBase; +using Shared.Results; using System.Collections; using System.Collections.Generic; using System.IO; using System.Net; using System.Net.Http; +using System.Net.Http.Headers; +using System.Text; using System.Threading; using System.Threading.Tasks; @@ -102,6 +105,110 @@ protected virtual ResponseData HandleResponseContent(String content) return JsonConvert.DeserializeObject>(content); } + protected virtual async Task> SendGetRequest(String uri, String accessToken, CancellationToken cancellationToken) + { + + HttpRequestMessage requestMessage = new(HttpMethod.Get, uri); + requestMessage.Headers.Authorization = new AuthenticationHeaderValue(AuthenticationSchemes.Bearer, accessToken); + + // Make the Http Call here + HttpResponseMessage httpResponse = await this.HttpClient.SendAsync(requestMessage, cancellationToken); + + // Process the response + Result result = await this.HandleResponseX(httpResponse, cancellationToken); + + if (result.IsFailed) + return ResultHelpers.CreateFailure(result); + + TResponse responseData = JsonConvert.DeserializeObject(result.Data); + + return Result.Success(responseData); + } + + protected virtual async Task> SendPostRequest(String uri, String accessToken, TRequest content, CancellationToken cancellationToken) + { + + HttpRequestMessage requestMessage = new(HttpMethod.Post, uri); + requestMessage.Headers.Authorization = new AuthenticationHeaderValue(AuthenticationSchemes.Bearer, accessToken); + requestMessage.Content = new StringContent(JsonConvert.SerializeObject(content), Encoding.UTF8, "application/json"); + + // Make the Http Call here + HttpResponseMessage httpResponse = await this.HttpClient.SendAsync(requestMessage, cancellationToken); + + // Process the response + Result result = await this.HandleResponseX(httpResponse, cancellationToken); + + if (result.IsFailed) + return ResultHelpers.CreateFailure(result); + + TResponse responseData = JsonConvert.DeserializeObject(result.Data); + + return Result.Success(responseData); + } + + protected virtual async Task> SendPutRequest(String uri, String accessToken, TRequest content, CancellationToken cancellationToken) + { + + HttpRequestMessage requestMessage = new(HttpMethod.Put, uri); + requestMessage.Headers.Authorization = new AuthenticationHeaderValue(AuthenticationSchemes.Bearer, accessToken); + requestMessage.Content = new StringContent(JsonConvert.SerializeObject(content), Encoding.UTF8, "application/json"); + + // Make the Http Call here + HttpResponseMessage httpResponse = await this.HttpClient.SendAsync(requestMessage, cancellationToken); + + // Process the response + Result result = await this.HandleResponseX(httpResponse, cancellationToken); + + if (result.IsFailed) + return ResultHelpers.CreateFailure(result); + + TResponse responseData = JsonConvert.DeserializeObject(result.Data); + + return Result.Success(responseData); + } + + protected virtual async Task> SendPatchRequest(String uri, String accessToken, TRequest content, CancellationToken cancellationToken) + { + + HttpRequestMessage requestMessage = new(HttpMethod.Patch, uri); + requestMessage.Headers.Authorization = new AuthenticationHeaderValue(AuthenticationSchemes.Bearer, accessToken); + requestMessage.Content = new StringContent(JsonConvert.SerializeObject(content), Encoding.UTF8, "application/json"); + + // Make the Http Call here + HttpResponseMessage httpResponse = await this.HttpClient.SendAsync(requestMessage, cancellationToken); + + // Process the response + Result result = await this.HandleResponseX(httpResponse, cancellationToken); + + if (result.IsFailed) + return ResultHelpers.CreateFailure(result); + + TResponse responseData = JsonConvert.DeserializeObject(result.Data); + + return Result.Success(responseData); + } + + protected virtual async Task> SendDeleteRequest(String uri, String accessToken, CancellationToken cancellationToken) + { + + HttpRequestMessage requestMessage = new(HttpMethod.Delete, uri); + requestMessage.Headers.Authorization = new AuthenticationHeaderValue(AuthenticationSchemes.Bearer, accessToken); + + // Make the Http Call here + HttpResponseMessage httpResponse = await this.HttpClient.SendAsync(requestMessage, cancellationToken); + + // Process the response + Result result = await this.HandleResponseX(httpResponse, cancellationToken); + + if (result.IsFailed) + return ResultHelpers.CreateFailure(result); + + TResponse responseData = JsonConvert.DeserializeObject(result.Data); + + return Result.Success(responseData); + } + + #endregion } @@ -110,4 +217,8 @@ public ClientHttpException(string? message, Exception? innerException = null) : base(message, innerException) { } +} + +public static class AuthenticationSchemes { + public static String Bearer = "Bearer"; } \ No newline at end of file From ab36ef3ab068312e803a53bde6b48b1f2b692d9b Mon Sep 17 00:00:00 2001 From: Stuart Ferguson Date: Sat, 18 Oct 2025 22:11:25 +0100 Subject: [PATCH 2/3] :| --- ClientProxyBase/ClientProxyBase.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ClientProxyBase/ClientProxyBase.cs b/ClientProxyBase/ClientProxyBase.cs index 26a015ef..3a70ffd2 100644 --- a/ClientProxyBase/ClientProxyBase.cs +++ b/ClientProxyBase/ClientProxyBase.cs @@ -219,6 +219,6 @@ public ClientHttpException(string? message, } } -public static class AuthenticationSchemes { - public static String Bearer = "Bearer"; +public class AuthenticationSchemes { + public const String Bearer = "Bearer"; } \ No newline at end of file From fc3e566e85fc87854bda1d4b9a59319c8bd2dfb9 Mon Sep 17 00:00:00 2001 From: Stuart Ferguson Date: Sat, 18 Oct 2025 22:15:24 +0100 Subject: [PATCH 3/3] :| --- ClientProxyBase/ClientProxyBase.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ClientProxyBase/ClientProxyBase.cs b/ClientProxyBase/ClientProxyBase.cs index 3a70ffd2..ff8b67f8 100644 --- a/ClientProxyBase/ClientProxyBase.cs +++ b/ClientProxyBase/ClientProxyBase.cs @@ -219,6 +219,6 @@ public ClientHttpException(string? message, } } -public class AuthenticationSchemes { - public const String Bearer = "Bearer"; +public static class AuthenticationSchemes { + public static readonly String Bearer = "Bearer"; } \ No newline at end of file