diff --git a/source/VMelnalksnis.NordigenDotNet.DependencyInjection/ServiceCollectionExtensions.cs b/source/VMelnalksnis.NordigenDotNet.DependencyInjection/ServiceCollectionExtensions.cs index 2f674d7..ef013ab 100644 --- a/source/VMelnalksnis.NordigenDotNet.DependencyInjection/ServiceCollectionExtensions.cs +++ b/source/VMelnalksnis.NordigenDotNet.DependencyInjection/ServiceCollectionExtensions.cs @@ -4,7 +4,9 @@ using System; using System.Diagnostics.CodeAnalysis; +using System.Linq; using System.Net.Http; +using System.Net.Http.Headers; using JetBrains.Annotations; @@ -27,6 +29,15 @@ namespace VMelnalksnis.NordigenDotNet.DependencyInjection; [PublicAPI] public static class ServiceCollectionExtensions { + private static readonly ProductInfoHeaderValue _userAgent; + + static ServiceCollectionExtensions() + { + var assemblyName = typeof(INordigenClient).Assembly.GetName(); + var assemblyShortName = assemblyName.Name ?? assemblyName.FullName.Split(',').First(); + _userAgent = new(assemblyShortName, assemblyName.Version?.ToString()); + } + /// Adds all required services for . /// The service collection in which to register the services. /// The configuration to which to bind options models. @@ -75,15 +86,6 @@ public static class ServiceCollectionExtensions private static void ConfigureNordigenClient(IServiceProvider provider, HttpClient client) { client.BaseAddress = provider.GetRequiredService>().CurrentValue.BaseAddress; - - var assembly = typeof(INordigenClient).Assembly.GetName(); - - var assemblyName = assembly.Name ?? - throw new InvalidOperationException($"Assembly {assembly.FullName} name is not specified"); - - var assemblyVersion = assembly.Version ?? - throw new InvalidOperationException($"Assembly {assembly.FullName} version is not specified"); - - client.DefaultRequestHeaders.UserAgent.Add(new(assemblyName, assemblyVersion.ToString())); + client.DefaultRequestHeaders.UserAgent.Add(_userAgent); } }