using Jugenddienst_Stunden.Interfaces; using Microsoft.Extensions.DependencyInjection; using System.Net.Http; namespace Jugenddienst_Stunden.Infrastructure; internal static class HttpClientRegistration { /// /// Registriert den ApiClient mit einem SocketsHttpHandler als primären MessageHandler. /// Vermeidet den Android-spezifischen Cast-Fehler in Xamarin.Android.Net.AndroidMessageHandler. /// public static IServiceCollection AddApiHttpClient(this IServiceCollection services, ApiOptions options) { if (services is null) throw new ArgumentNullException(nameof(services)); if (options is null) throw new ArgumentNullException(nameof(options)); // ApiOptions als Singleton bereitstellen (kann nach Bedarf angepasst werden) services.AddSingleton(options); // HttpClient für ApiClient registrieren und einen SocketsHttpHandler verwenden. // SocketsHttpHandler vermeidet das problematische Casting, das bei AndroidMessageHandler // zur InvalidCastException (URLConnectionInvoker -> HttpURLConnection) führt. services.AddHttpClient() .ConfigurePrimaryHttpMessageHandler(() => new SocketsHttpHandler()); return services; } }