LibraryConnector-Updates work

Fixes #418
This commit is contained in:
2025-09-18 00:42:46 +02:00
parent 55fb37d62b
commit 5af1605c5b
16 changed files with 125 additions and 135 deletions

View File

@@ -1,35 +1,41 @@
using System.Net;
using System.Net.Http.Headers;
using log4net;
using HttpMethod = System.Net.Http.HttpMethod;
namespace API.Schema.LibraryContext.LibraryConnectors;
public class NetClient
{
private static ILog Log = LogManager.GetLogger(typeof(NetClient));
private static readonly ILog Log = LogManager.GetLogger(typeof(NetClient));
private static readonly HttpClient Client = new();
public static Stream MakeRequest(string url, string authScheme, string auth)
public static async Task<Stream> MakeRequest(string url, string authScheme, string auth, HttpMethod? method = null, CancellationToken? cancellationToken = null)
{
Log.Debug($"Requesting {url}");
HttpClient client = new();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(authScheme, auth);
HttpRequestMessage requestMessage = new()
{
Method = HttpMethod.Get,
RequestUri = new Uri(url)
};
method ??= HttpMethod.Get;
CancellationToken ct = cancellationToken ?? CancellationToken.None;
Client.DefaultRequestHeaders.Authorization = new (authScheme, auth);
try
{
HttpResponseMessage response = client.Send(requestMessage);
HttpRequestMessage requestMessage = new()
{
Method = method,
RequestUri = new (url),
Headers =
{
{ "Accept", "application/json" },
{ "Authorization", new AuthenticationHeaderValue(authScheme, auth).ToString() }
}
};
HttpResponseMessage response = await Client.SendAsync(requestMessage, ct);
if (response.StatusCode is HttpStatusCode.Unauthorized &&
response.RequestMessage!.RequestUri!.AbsoluteUri != url)
return MakeRequest(response.RequestMessage!.RequestUri!.AbsoluteUri, authScheme, auth);
else if (response.IsSuccessStatusCode)
return response.Content.ReadAsStream();
else
return Stream.Null;
if (response.StatusCode is HttpStatusCode.Unauthorized && response.RequestMessage?.RequestUri?.AbsoluteUri is { } absoluteUri && absoluteUri != url)
return await MakeRequest(absoluteUri, authScheme, auth, method, ct);
if (response.IsSuccessStatusCode)
return await response.Content.ReadAsStreamAsync(ct);
return Stream.Null;
}
catch (Exception e)
{
@@ -45,29 +51,4 @@ public class NetClient
return Stream.Null;
}
}
public static bool MakePost(string url, string authScheme, string auth)
{
HttpClient client = new()
{
DefaultRequestHeaders =
{
{ "Accept", "application/json" },
{ "Authorization", new AuthenticationHeaderValue(authScheme, auth).ToString() }
}
};
HttpRequestMessage requestMessage = new ()
{
Method = HttpMethod.Post,
RequestUri = new Uri(url)
};
HttpResponseMessage response = client.Send(requestMessage);
if(response.StatusCode is HttpStatusCode.Unauthorized && response.RequestMessage!.RequestUri!.AbsoluteUri != url)
return MakePost(response.RequestMessage!.RequestUri!.AbsoluteUri, authScheme, auth);
else if (response.IsSuccessStatusCode)
return true;
else
return false;
}
}