Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/pullrequest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
- name: Install NET 9
uses: actions/setup-dotnet@v4.0.1
with:
dotnet-version: '9.0.x'
dotnet-version: '9.0.306'

- name: Restore Nuget Packages
run: dotnet restore Shared.sln --source ${{ secrets.PUBLICFEEDURL }} --source ${{ secrets.PRIVATEFEED_URL }}
Expand Down Expand Up @@ -67,7 +67,7 @@ jobs:
- name: Install NET 9
uses: actions/setup-dotnet@v4.0.1
with:
dotnet-version: '9.0.x'
dotnet-version: '9.0.306'

- name: Build Windows SQL Server
run: |
Expand Down
3 changes: 3 additions & 0 deletions ClientProxyBase/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
using System.Runtime.CompilerServices;

[assembly: InternalsVisibleTo("Shared.Tests")]
34 changes: 29 additions & 5 deletions ClientProxyBase/ClientProxyBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
using System.Threading;
using System.Threading.Tasks;

public abstract class ClientProxyBase {
public abstract partial class ClientProxyBase {
#region Fields

/// <summary>
Expand Down Expand Up @@ -106,6 +106,7 @@
return JsonConvert.DeserializeObject<ResponseData<T>>(content);
}

/*
protected virtual async Task<Result<TResponse>> SendGetRequest<TResponse>(String uri,
String accessToken,
CancellationToken cancellationToken) =>
Expand Down Expand Up @@ -151,9 +152,9 @@
return Result.Success<TResponse>(responseData);
}

protected virtual async Task<Result<TResponse>> SendPostRequest<TRequest, TResponse>(String uri, String accessToken, TRequest content, CancellationToken cancellationToken) => await this.SendPostRequest<TRequest, TResponse>(uri, accessToken, content, cancellationToken, null);
protected virtual async Task<Result<TResponse>> SendPostRequest<TRequest, TResponse>(String uri, String accessToken, TRequest content, CancellationToken cancellationToken) => await this.SendPostRequest<TRequest, TResponse>(uri, accessToken, content, null, cancellationToken);

protected virtual async Task<Result<TResponse>> SendPostRequest<TRequest, TResponse>(String uri, String accessToken, TRequest content, CancellationToken cancellationToken, List<(String header, String value)> additionalHeaders)
protected virtual async Task<Result<TResponse>> SendPostRequest<TRequest, TResponse>(String uri, String accessToken, TRequest content, List<(String header, String value)> additionalHeaders, CancellationToken cancellationToken)
{

HttpRequestMessage requestMessage = new(HttpMethod.Post, uri);
Expand Down Expand Up @@ -184,6 +185,30 @@
return Result.Success<TResponse>(responseData);
}

protected virtual async Task<Result> SendPostRequest<TResponse>(string uri,
string accessToken,
List<(string header, string value)> additionalHeaders,
CancellationToken cancellationToken) {
Result result = await this.SendPostRequest<Object>(uri, accessToken, additionalHeaders, cancellationToken);
if (result.IsFailed)
return ResultHelpers.CreateFailure(result);
return Result.Success();
}

protected virtual async Task<Result> SendPostRequest<TResponse>(string uri,
string accessToken,
CancellationToken cancellationToken) => await this.SendPostRequest<TResponse>(uri, accessToken, null, cancellationToken);

//protected virtual async Task<Result> SendPostRequest(string uri,
// string accessToken = null,
// List<(string header, string value)> additionalHeaders = null)
//{
// Result<String> result = await SendPostRequest<object, string>(uri, accessToken, null, cancellationToken, additionalHeaders);
// if (result.IsFailed)
// return ResultHelpers.CreateFailure(result);
// return Result.Success();
//}

protected virtual async Task<Result<TResponse>> SendPutRequest<TRequest, TResponse>(String uri, String accessToken, TRequest content, CancellationToken cancellationToken) =>
await this.SendPutRequest<TRequest, TResponse>(uri, accessToken, content, cancellationToken, null);

Expand Down Expand Up @@ -278,7 +303,7 @@
TResponse responseData = JsonConvert.DeserializeObject<TResponse>(result.Data);

return Result.Success<TResponse>(responseData);
}
}*/

static void AddAdditionalHeaders(HttpRequestMessage requestMessage,
List<(String header, String value)> additionalHeaders) {
Expand All @@ -289,12 +314,11 @@
}
}


#endregion
}

public class ClientHttpException : Exception {
public ClientHttpException(string? message,

Check warning on line 321 in ClientProxyBase/ClientProxyBase.cs

View workflow job for this annotation

GitHub Actions / Build and Test Pull Requests - Windows

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 321 in ClientProxyBase/ClientProxyBase.cs

View workflow job for this annotation

GitHub Actions / Build and Test Pull Requests - Windows

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 321 in ClientProxyBase/ClientProxyBase.cs

View workflow job for this annotation

GitHub Actions / Build and Test Pull Requests - Linux

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 321 in ClientProxyBase/ClientProxyBase.cs

View workflow job for this annotation

GitHub Actions / Build and Test Pull Requests - Linux

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.
Exception? innerException = null) : base(message, innerException) {

}
Expand Down
54 changes: 54 additions & 0 deletions ClientProxyBase/ClientProxyBase_DELETE.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Shared.Results;
using SimpleResults;

namespace ClientProxyBase
{
public abstract partial class ClientProxyBase
{
internal virtual async Task<Result> SendHttpDeleteRequest(String uri,
String accessToken,
List<(String header, String value)> additionalHeaders,
CancellationToken cancellationToken)
{
HttpRequestMessage requestMessage = new(HttpMethod.Delete, uri);
if (String.IsNullOrEmpty(accessToken) == false)
requestMessage.Headers.Authorization = new AuthenticationHeaderValue(AuthenticationSchemes.Bearer, accessToken);

AddAdditionalHeaders(requestMessage, additionalHeaders);

// Make the Http Call here
HttpResponseMessage httpResponse = await this.HttpClient.SendAsync(requestMessage, cancellationToken);

// Process the response
Result<String> result = await this.HandleResponseX(httpResponse, cancellationToken);

if (result.IsFailed)
return ResultHelpers.CreateFailure(result);

return Result.Success();
}

internal virtual async Task<Result> SendHttpDeleteRequest(String uri,
String accessToken,
CancellationToken cancellationToken) =>
await this.SendHttpDeleteRequest(uri, accessToken,null, cancellationToken);

internal virtual async Task<Result> SendHttpDeleteRequest(String uri,
List<(String header, String value)> additionalHeaders,
CancellationToken cancellationToken) =>
await this.SendHttpDeleteRequest(uri, null, additionalHeaders, cancellationToken);

internal virtual async Task<Result> SendHttpDeleteRequest(String uri,
CancellationToken cancellationToken) =>
await this.SendHttpDeleteRequest(uri, null, null, cancellationToken);
}
}
56 changes: 56 additions & 0 deletions ClientProxyBase/ClientProxyBase_GET.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
using Newtonsoft.Json;
using Shared.Results;
using SimpleResults;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace ClientProxyBase
{
public abstract partial class ClientProxyBase
{
internal virtual async Task<Result<TResponse>> SendHttpGetRequest<TResponse>(String uri,
String accessToken,
List<(String header, String value)> additionalHeaders,
CancellationToken cancellationToken)
{
HttpRequestMessage requestMessage = new(HttpMethod.Get, uri);
if (String.IsNullOrEmpty(accessToken) == false)
requestMessage.Headers.Authorization = new AuthenticationHeaderValue(AuthenticationSchemes.Bearer, accessToken);

AddAdditionalHeaders(requestMessage, additionalHeaders);

// Make the Http Call here
HttpResponseMessage httpResponse = await this.HttpClient.SendAsync(requestMessage, cancellationToken);

// Process the response
Result<String> result = await this.HandleResponseX(httpResponse, cancellationToken);

if (result.IsFailed)
return ResultHelpers.CreateFailure(result);

TResponse responseData = JsonConvert.DeserializeObject<TResponse>(result.Data);

return Result.Success(responseData);
}

internal virtual async Task<Result<TResponse>> SendHttpGetRequest<TResponse>(String uri,
String accessToken,
CancellationToken cancellationToken) =>
await this.SendHttpGetRequest<TResponse>(uri, accessToken, null, cancellationToken);

internal virtual async Task<Result<TResponse>> SendHttpGetRequest<TResponse>(String uri,
List<(String header, String value)> additionalHeaders,
CancellationToken cancellationToken) =>
await this.SendHttpGetRequest<TResponse>(uri, null, additionalHeaders, cancellationToken);

internal virtual async Task<Result<TResponse>> SendHttpGetRequest<TResponse>(String uri,
CancellationToken cancellationToken) =>
await this.SendHttpGetRequest<TResponse>(uri, null, null, cancellationToken);
}
}
69 changes: 69 additions & 0 deletions ClientProxyBase/ClientProxyBase_PATCH.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
using Newtonsoft.Json;
using Shared.Results;
using SimpleResults;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace ClientProxyBase
{
public abstract partial class ClientProxyBase
{
internal virtual async Task<Result<TRequest>> SendHttpPatchRequest<TRequest>(String uri,
TRequest request,
String accessToken,
List<(String header, String value)> additionalHeaders,
CancellationToken cancellationToken)
{
HttpRequestMessage requestMessage = new(HttpMethod.Patch, uri);
if (String.IsNullOrEmpty(accessToken) == false)
requestMessage.Headers.Authorization = new AuthenticationHeaderValue(AuthenticationSchemes.Bearer, accessToken);

AddAdditionalHeaders(requestMessage, additionalHeaders);

if (request.GetType() == typeof(FormUrlEncodedContent))
{
// Treat this specially
requestMessage.Content = request as FormUrlEncodedContent;
}
else
{
requestMessage.Content = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
}

// Make the Http Call here
HttpResponseMessage httpResponse = await this.HttpClient.SendAsync(requestMessage, cancellationToken);

// Process the response
Result<String> result = await this.HandleResponseX(httpResponse, cancellationToken);

if (result.IsFailed)
return ResultHelpers.CreateFailure(result);

return Result.Success();
}

internal virtual async Task<Result<TRequest>> SendHttpPatchRequest<TRequest>(String uri,
TRequest request,
String accessToken,
CancellationToken cancellationToken) =>
await this.SendHttpPatchRequest(uri, request, accessToken, null, cancellationToken);

internal virtual async Task<Result<TRequest>> SendHttpPatchRequest<TRequest>(String uri,
TRequest request,
List<(String header, String value)> additionalHeaders,
CancellationToken cancellationToken) =>
await this.SendHttpPatchRequest(uri, request, null, additionalHeaders, cancellationToken);

internal virtual async Task<Result<TRequest>> SendHttpPatchRequest<TRequest>(String uri,
TRequest request,
CancellationToken cancellationToken) =>
await this.SendHttpPatchRequest(uri, request, null, null, cancellationToken);

}
}
Loading
Loading