diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 5201a5f..7d35a2a 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -1,3 +1,9 @@ +v 10.3.0 +- The Library is now compatible with .NET 8 (and .NET 6). +- Removed large dependency on Microsoft.AspNetCore.Components.WebAssembly package in favour of smaller Abstractions packages, this also fixed the warning people would get using dotnet 9 that says that multiple packages including System.Text.Json are vulnerable. +- Changed various internal code style to be more consistent with .NET 8 standards (only syntax no breaking changes). +- Fixed some typos in documentation. + v.10.2.0 - Improve: GetCapturedContentAsync() will proceed even if the response has illegal content headers. diff --git a/Toolbelt.Blazor.HttpClientInterceptor/HttpClientInterceptor.cs b/Toolbelt.Blazor.HttpClientInterceptor/HttpClientInterceptor.cs index 474d1bb..d42d4b0 100644 --- a/Toolbelt.Blazor.HttpClientInterceptor/HttpClientInterceptor.cs +++ b/Toolbelt.Blazor.HttpClientInterceptor/HttpClientInterceptor.cs @@ -5,7 +5,7 @@ namespace Toolbelt.Blazor { /// - /// Intercept all of the sending HTTP requests on a client side Blazor application. + /// Intercept all the sending HTTP requests on a client side Blazor application. /// public class HttpClientInterceptor : IHttpClientInterceptor { @@ -20,12 +20,12 @@ public class HttpClientInterceptor : IHttpClientInterceptor public event HttpClientInterceptorEventHandler BeforeSendAsync; /// - /// Occurs after received a response of a HTTP request. (include it wasn't succeeded.) + /// Occurs after received a response of an HTTP request. (include it wasn't succeeded.) /// public event EventHandler AfterSend; /// - /// Occurs after received a response of a HTTP request. (include it wasn't succeeded.) + /// Occurs after received a response of an HTTP request. (include it wasn't succeeded.) /// public event HttpClientInterceptorEventHandler AfterSendAsync; diff --git a/Toolbelt.Blazor.HttpClientInterceptor/HttpClientInterceptorEventArgs.cs b/Toolbelt.Blazor.HttpClientInterceptor/HttpClientInterceptorEventArgs.cs index f6e88f1..d6a32b9 100644 --- a/Toolbelt.Blazor.HttpClientInterceptor/HttpClientInterceptorEventArgs.cs +++ b/Toolbelt.Blazor.HttpClientInterceptor/HttpClientInterceptorEventArgs.cs @@ -21,7 +21,7 @@ public class HttpClientInterceptorEventArgs : EventArgs /// /// The HttpResponseMessage object that is returned from HTTP request handler.
/// This property is available only when "AfterSend" event is fired. - /// [NOTICE]
Don't retrive content from the "Response.Content" property directly.
+ /// [NOTICE]
Don't retrieve content from the "Response.Content" property directly.
/// Instead, call the "GetCapturedContentAsync()" method of this event arguments object to do it.
///
public HttpResponseMessage Response { get; } diff --git a/Toolbelt.Blazor.HttpClientInterceptor/HttpClientInterceptorExtension.cs b/Toolbelt.Blazor.HttpClientInterceptor/HttpClientInterceptorExtension.cs index 28fa9f7..16fd798 100644 --- a/Toolbelt.Blazor.HttpClientInterceptor/HttpClientInterceptorExtension.cs +++ b/Toolbelt.Blazor.HttpClientInterceptor/HttpClientInterceptorExtension.cs @@ -12,7 +12,7 @@ namespace Toolbelt.Blazor.Extensions.DependencyInjection /// public static class HttpClientInterceptorExtension { - private static readonly FieldInfo HandlerField = typeof(HttpMessageInvoker).GetField("_handler", BindingFlags.Instance | BindingFlags.NonPublic); + private static readonly FieldInfo? HandlerField = typeof(HttpMessageInvoker).GetField("_handler", BindingFlags.Instance | BindingFlags.NonPublic); /// /// Adds a HttpClientInterceptor service to the specified Microsoft.Extensions.DependencyInjection.IServiceCollection. @@ -22,29 +22,33 @@ public static void AddHttpClientInterceptor(this IServiceCollection services) { services.TryAddSingleton(services => { - if (HandlerField != null) + if (HandlerField == null) { - var httpClient = default(HttpClient); - try - { - httpClient = services.GetService(); - } - catch (InvalidOperationException e) when (e.Source == "Microsoft.Extensions.DependencyInjection" && e.HResult == -2146233079) - { - } + return new HttpClientInterceptor(); + } - if (httpClient != null) - { - httpClient.EnableIntercept(services); - } + var httpClient = default(HttpClient); + + try + { + httpClient = services.GetService(); + } + catch (InvalidOperationException e) when (e.Source == "Microsoft.Extensions.DependencyInjection" && e.HResult == -2146233079) + { } + httpClient?.EnableIntercept(services); + return new HttpClientInterceptor(); }); services.TryAddSingleton(services => { var interceptor = services.GetService(); + if (interceptor == null) + { + throw new NullReferenceException("HttpClientInterceptor is not registered. Please call AddHttpClientInterceptor() before AddHttpClientInterceptorHandler()."); + } return (IHttpClientInterceptor)interceptor; }); } diff --git a/Toolbelt.Blazor.HttpClientInterceptor/HttpClientInterceptorHandler.cs b/Toolbelt.Blazor.HttpClientInterceptor/HttpClientInterceptorHandler.cs index 3bc9466..a1c0820 100644 --- a/Toolbelt.Blazor.HttpClientInterceptor/HttpClientInterceptorHandler.cs +++ b/Toolbelt.Blazor.HttpClientInterceptor/HttpClientInterceptorHandler.cs @@ -19,7 +19,7 @@ internal class HttpClientInterceptorHandler : HttpMessageHandler private readonly HttpMessageHandler BaseHandler; - private readonly ILogger Logger; + private readonly ILogger Logger; public HttpClientInterceptorHandler(IServiceProvider services, HttpMessageHandler baseHandler) { @@ -46,7 +46,7 @@ protected override async Task SendAsync(HttpRequestMessage } else { - response = await (SendAsyncMethod.Invoke(this.BaseHandler, new object[] { request, cancellationToken }) as Task); + response = await ((Task)SendAsyncMethod.Invoke(this.BaseHandler, new object[] { request, cancellationToken })); } return response; } diff --git a/Toolbelt.Blazor.HttpClientInterceptor/Toolbelt.Blazor.HttpClientInterceptor.csproj b/Toolbelt.Blazor.HttpClientInterceptor/Toolbelt.Blazor.HttpClientInterceptor.csproj index 3dedff2..473101d 100644 --- a/Toolbelt.Blazor.HttpClientInterceptor/Toolbelt.Blazor.HttpClientInterceptor.csproj +++ b/Toolbelt.Blazor.HttpClientInterceptor/Toolbelt.Blazor.HttpClientInterceptor.csproj @@ -1,26 +1,27 @@  - netstandard2.1 + netstandard2.1;net6.0;net8.0 bin\$(Configuration)\$(TargetFramework)\$(MSBuildProjectName).xml $(NoWarn);1591 true J.Sakamoto - Copyright © 2018-2022 J.Sakamoto, Mozilla Public License 2.0 + Copyright © 2018-2024 J.Sakamoto, Mozilla Public License 2.0 https://github.com/jsakamoto/Toolbelt.Blazor.HttpClientInterceptor/ Intercept all of the sending HTTP requests on a client side Blazor application. blazor,http,httpclient - 10.2.0 + 10.3.0 (Please write the package release notes in "../RELEASE-NOTES.txt") MPL-2.0 ../_dist nupkg-icon.png README.md - + - + +