30 lines
1.2 KiB
C#
30 lines
1.2 KiB
C#
using Jugenddienst_Stunden.Interfaces;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using System.Net.Http;
|
|
|
|
namespace Jugenddienst_Stunden.Infrastructure;
|
|
|
|
internal static class HttpClientRegistration {
|
|
/// <summary>
|
|
/// Registriert den ApiClient mit einem SocketsHttpHandler als primären MessageHandler.
|
|
/// Vermeidet den Android-spezifischen Cast-Fehler in Xamarin.Android.Net.AndroidMessageHandler.
|
|
///</summary>
|
|
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<IApiClient, ApiClient>()
|
|
.ConfigurePrimaryHttpMessageHandler(() => new SocketsHttpHandler());
|
|
|
|
return services;
|
|
}
|
|
}
|