From 99294322327f899eb01e9c78c0681528cada99d1 Mon Sep 17 00:00:00 2001 From: Rory& Date: Mon, 17 Jun 2024 06:17:03 +0200 Subject: Single HTTP client fixes --- LibMatrix/Extensions/JsonConverters.cs | 29 +++++++++++++++++++++++++ LibMatrix/Extensions/MatrixHttpClient.Single.cs | 15 ++++++------- 2 files changed, 36 insertions(+), 8 deletions(-) create mode 100644 LibMatrix/Extensions/JsonConverters.cs (limited to 'LibMatrix/Extensions') diff --git a/LibMatrix/Extensions/JsonConverters.cs b/LibMatrix/Extensions/JsonConverters.cs new file mode 100644 index 0000000..eed3fb2 --- /dev/null +++ b/LibMatrix/Extensions/JsonConverters.cs @@ -0,0 +1,29 @@ +using System.Globalization; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace LibMatrix.Extensions; + +public class JsonFloatStringConverter : JsonConverter { + public override float Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + => float.Parse(reader.GetString()!); + + public override void Write(Utf8JsonWriter writer, float value, JsonSerializerOptions options) + => writer.WriteStringValue(value.ToString(CultureInfo.InvariantCulture)); +} + +public class JsonDoubleStringConverter : JsonConverter { + public override double Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + => double.Parse(reader.GetString()!); + + public override void Write(Utf8JsonWriter writer, double value, JsonSerializerOptions options) + => writer.WriteStringValue(value.ToString(CultureInfo.InvariantCulture)); +} + +public class JsonDecimalStringConverter : JsonConverter { + public override decimal Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + => decimal.Parse(reader.GetString()!); + + public override void Write(Utf8JsonWriter writer, decimal value, JsonSerializerOptions options) + => writer.WriteStringValue(value.ToString(CultureInfo.InvariantCulture)); +} \ No newline at end of file diff --git a/LibMatrix/Extensions/MatrixHttpClient.Single.cs b/LibMatrix/Extensions/MatrixHttpClient.Single.cs index 9d0f9d0..e722370 100644 --- a/LibMatrix/Extensions/MatrixHttpClient.Single.cs +++ b/LibMatrix/Extensions/MatrixHttpClient.Single.cs @@ -14,19 +14,18 @@ using ArcaneLibs.Extensions; namespace LibMatrix.Extensions; #if SINGLE_HTTPCLIENT +// TODO: Add URI wrapper for public class MatrixHttpClient { - private static readonly SocketsHttpHandler handler; - - private static readonly HttpClient client; + private static readonly HttpClient Client; static MatrixHttpClient() { try { - handler = new SocketsHttpHandler { + var handler = new SocketsHttpHandler { PooledConnectionLifetime = TimeSpan.FromMinutes(15), MaxConnectionsPerServer = 4096, EnableMultipleHttp2Connections = true }; - client = new HttpClient(handler) { + Client = new HttpClient(handler) { DefaultRequestVersion = new Version(3, 0) }; } @@ -35,7 +34,7 @@ public class MatrixHttpClient { Console.WriteLine("Original exception (safe to ignore!):"); Console.WriteLine(e); - client = new HttpClient { + Client = new HttpClient { DefaultRequestVersion = new Version(3, 0) }; } @@ -84,7 +83,7 @@ public class MatrixHttpClient { HttpResponseMessage? responseMessage; try { - responseMessage = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken); + responseMessage = await Client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken); } catch (Exception e) { Console.WriteLine( @@ -208,7 +207,7 @@ public class MatrixHttpClient { public async Task CheckSuccessStatus(string url) { //cors causes failure, try to catch try { - var resp = await client.GetAsync(url); + var resp = await Client.GetAsync(url); return resp.IsSuccessStatusCode; } catch (Exception e) { -- cgit 1.4.1