From cb8846a7a3310f8513989da5aadb5202f048a1b3 Mon Sep 17 00:00:00 2001 From: TheArcaneBrony Date: Mon, 14 Aug 2023 19:46:11 +0200 Subject: Code cleanup --- LibMatrix/Extensions/DictionaryExtensions.cs | 3 +-- LibMatrix/Extensions/HttpClientExtensions.cs | 38 +++++++++++++-------------- LibMatrix/Extensions/JsonElementExtensions.cs | 4 +-- 3 files changed, 21 insertions(+), 24 deletions(-) (limited to 'LibMatrix/Extensions') diff --git a/LibMatrix/Extensions/DictionaryExtensions.cs b/LibMatrix/Extensions/DictionaryExtensions.cs index fbc5cf5..f01cf68 100644 --- a/LibMatrix/Extensions/DictionaryExtensions.cs +++ b/LibMatrix/Extensions/DictionaryExtensions.cs @@ -3,8 +3,7 @@ namespace LibMatrix.Extensions; public static class DictionaryExtensions { public static bool ChangeKey(this IDictionary dict, TKey oldKey, TKey newKey) { - TValue value; - if (!dict.Remove(oldKey, out value)) + if (!dict.Remove(oldKey, out var value)) return false; dict[newKey] = value; // or dict.Add(newKey, value) depending on ur comfort diff --git a/LibMatrix/Extensions/HttpClientExtensions.cs b/LibMatrix/Extensions/HttpClientExtensions.cs index 797a077..d4017ed 100644 --- a/LibMatrix/Extensions/HttpClientExtensions.cs +++ b/LibMatrix/Extensions/HttpClientExtensions.cs @@ -1,3 +1,4 @@ +using System.Diagnostics; using System.Net.Http.Headers; using System.Reflection; using System.Text.Json; @@ -23,7 +24,7 @@ public class MatrixHttpClient : HttpClient { CancellationToken cancellationToken) { Console.WriteLine($"Sending request to {request.RequestUri}"); try { - HttpRequestOptionsKey WebAssemblyEnableStreamingResponseKey = + var WebAssemblyEnableStreamingResponseKey = new HttpRequestOptionsKey("WebAssemblyEnableStreamingResponse"); request.Options.Set(WebAssemblyEnableStreamingResponseKey, true); } @@ -33,26 +34,23 @@ public class MatrixHttpClient : HttpClient { } var a = await base.SendAsync(request, cancellationToken); - if (!a.IsSuccessStatusCode) { - var content = await a.Content.ReadAsStringAsync(cancellationToken); - if (content.StartsWith('{')) { - var ex = JsonSerializer.Deserialize(content); - ex.RawContent = content; - // Console.WriteLine($"Failed to send request: {ex}"); - if (ex?.RetryAfterMs is not null) { - await Task.Delay(ex.RetryAfterMs.Value, cancellationToken); - typeof(HttpRequestMessage).GetField("_sendStatus", BindingFlags.NonPublic | BindingFlags.Instance) - ?.SetValue(request, 0); - return await SendAsync(request, cancellationToken); - } + if (a.IsSuccessStatusCode) return a; - throw ex!; - } + //error handling + var content = await a.Content.ReadAsStringAsync(cancellationToken); + if (!content.StartsWith('{')) throw new InvalidDataException("Encountered invalid data:\n" + content); + //we have a matrix error + var ex = JsonSerializer.Deserialize(content); + Debug.Assert(ex != null, nameof(ex) + " != null"); + ex.RawContent = content; + // Console.WriteLine($"Failed to send request: {ex}"); + if (ex?.RetryAfterMs is null) throw ex!; + //we have a ratelimit error + await Task.Delay(ex.RetryAfterMs.Value, cancellationToken); + typeof(HttpRequestMessage).GetField("_sendStatus", BindingFlags.NonPublic | BindingFlags.Instance) + ?.SetValue(request, 0); + return await SendAsync(request, cancellationToken); - throw new InvalidDataException("Encountered invalid data:\n" + content); - } - - return a; } // GetFromJsonAsync @@ -66,7 +64,7 @@ public class MatrixHttpClient : HttpClient { } // GetStreamAsync - public async Task GetStreamAsync(string requestUri, CancellationToken cancellationToken = default) { + public new async Task GetStreamAsync(string requestUri, CancellationToken cancellationToken = default) { var request = new HttpRequestMessage(HttpMethod.Get, requestUri); request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var response = await SendAsync(request, cancellationToken); diff --git a/LibMatrix/Extensions/JsonElementExtensions.cs b/LibMatrix/Extensions/JsonElementExtensions.cs index caf96e1..f39f300 100644 --- a/LibMatrix/Extensions/JsonElementExtensions.cs +++ b/LibMatrix/Extensions/JsonElementExtensions.cs @@ -14,7 +14,7 @@ public static class JsonElementExtensions { // return false; Console.WriteLine($"{objectType.Name} {objectPropertyName}"); - bool unknownPropertyFound = false; + var unknownPropertyFound = false; var mappedPropsDict = objectType.GetProperties() .Where(x => x.GetCustomAttribute() is not null) .ToDictionary(x => x.GetCustomAttribute()!.Name, x => x); @@ -61,7 +61,7 @@ public static class JsonElementExtensions { propertyType = propertyType.GetGenericArguments()[0]; } - bool switchResult = false; + var switchResult = false; switch (field.Value.ValueKind) { case JsonValueKind.Array: switchResult = field.Value.EnumerateArray().Aggregate(switchResult, -- cgit 1.4.1