public static void Setup(WebAssemblyHostBuilder builder, ApiServiceSettings settings) { builder.Services.TryAddSingleton <ApiService>(); builder.Services.TryAddSingleton <IObjectConverter, DefaultObjectConverter>(); SetupHttpClient(builder, settings); SetupApiInterfacesInstances(builder, settings); }
private static void SetupHttpClient(WebAssemblyHostBuilder builder, ApiServiceSettings settings) { var httpClient = settings?.HttpClient ?? new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }; builder.Services.TryAddSingleton(httpClient); }
public static bool CheckForConventions(Type apiInterface, ApiServiceSettings settings) { if (conventionCheckPassedTypes.Contains(apiInterface)) { return(true); } var throwException = (settings?.OnApiInterfaceConventionViolated ?? OnApiInterfaceConventionViolated.SkipAndContinueRunning) == OnApiInterfaceConventionViolated.ThrowException; var success = CheckForInterfaceType(apiInterface, throwException) && CheckForMaxOneComplexParameter(apiInterface, throwException) && CheckForNameDifference(apiInterface, throwException); if (success) { conventionCheckPassedTypes.Add(apiInterface); } return(success); }
private static void SetupApiInterfacesInstances(WebAssemblyHostBuilder builder, ApiServiceSettings settings) { if (settings?.ApiInterfacesSources == null) { return; } foreach (var apiInterface in settings.ApiInterfacesSources.SelectMany(ai => ai.ApiInterfaces).ToList()) { if (!ApiConventionManager.CheckForConventions(apiInterface, settings)) { continue; } AddServiceForApiInterfaceType(apiInterface, builder); } }