/// <summary> /// /// </summary> /// <param name="services"></param> /// <param name="configuration"></param> /// <returns></returns> public static IServiceCollection AddCrossPlatformServices(this IServiceCollection services, IConfiguration configuration) { DisplayResponsiveAdConfiguration displayResponsiveAdConfiguration = configuration.GetSection("DisplayResponsiveAdConfiguration") .Get <DisplayResponsiveAdConfiguration>(); services.AddSingleton(displayResponsiveAdConfiguration); FaceBookLikeButtonConfiguration faceBookLikeButtonConfiguration = configuration.GetSection(nameof(faceBookLikeButtonConfiguration)) .Get <FaceBookLikeButtonConfiguration>(); services.AddSingleton(faceBookLikeButtonConfiguration); services.AddTransient <IVideoEditAccessTokenProvider, VideoEditAccessTokenProvider>(); services.AddTransient <IVideoEditAccessTokenProvider, VideoEditAccessTokenProvider>(); services.AddSingleton <LocalizationClientService>(); services.AddTransient <HttpClientService>(); services.AddBlazoredToast(); services.AddTransient <VideoClientService>(); services.AddTransient <UserProfileClientService>(); services.AddTransient <VisitorTrackingClientService>(); services.AddTransient <UserClientService>(); services.AddTransient <SearchClientService>(); services.AddTransient <VideoCommentClientService>(); services.AddTransient <UserYouTubeChannelClientService>(); services.AddTransient <VideoPlaylistClientService>(); services.AddTransient <VideoJobClientService>(); return(services); }
public static async Task Main(string[] args) { string assemblyName = "FairPlayTube"; var builder = WebAssemblyHostBuilder.CreateDefault(args); builder.RootComponents.Add <App>("#app"); builder.Services.AddBlazoredToast(); builder.Services.AddSingleton <IStringLocalizerFactory, ApiLocalizerFactory>(); builder.Services.AddSingleton <IStringLocalizer, ApiLocalizer>(); builder.Services.AddLocalization(); builder.Services.AddScoped <LocalizationMessageHandler>(); builder.Services.AddHttpClient($"{assemblyName}.ServerAPI", client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)) .AddHttpMessageHandler <LocalizationMessageHandler>() .AddHttpMessageHandler <BaseAddressAuthorizationMessageHandler>(); builder.Services.AddHttpClient($"{assemblyName}.ServerAPI.Anonymous", client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)) .AddHttpMessageHandler <LocalizationMessageHandler>(); builder.Services.AddScoped(sp => sp.GetRequiredService <IHttpClientFactory>() .CreateClient($"{assemblyName}.ServerAPI")); builder.Services.AddScoped(sp => sp.GetRequiredService <IHttpClientFactory>() .CreateClient($"{assemblyName}.ServerAPI.Anonymous")); builder.Services.AddMsalAuthentication <RemoteAuthenticationState, CustomRemoteUserAccount>(options => { builder.Configuration.Bind("AzureAdB2C", options.ProviderOptions.Authentication); var defaultScope = builder.Configuration["AzureAdB2CScopes:DefaultScope"]; options.ProviderOptions.DefaultAccessTokenScopes.Add(defaultScope); options.ProviderOptions.LoginMode = "redirect"; options.UserOptions.NameClaim = "name"; options.UserOptions.RoleClaim = "Role"; }).AddAccountClaimsPrincipalFactory < RemoteAuthenticationState, CustomRemoteUserAccount, CustomAccountClaimsPrincipalFactory>(); AzureQnABotConfiguration azureQnABotConfiguration = builder.Configuration.GetSection("AzureQnABotConfiguration").Get <AzureQnABotConfiguration>(); builder.Services.AddSingleton(azureQnABotConfiguration); DisplayResponsiveAdConfiguration displayResponsiveAdConfiguration = builder.Configuration.GetSection("DisplayResponsiveAdConfiguration") .Get <DisplayResponsiveAdConfiguration>(); builder.Services.AddSingleton(displayResponsiveAdConfiguration); FaceBookLikeButtonConfiguration faceBookLikeButtonConfiguration = builder.Configuration.GetSection(nameof(faceBookLikeButtonConfiguration)) .Get <FaceBookLikeButtonConfiguration>(); builder.Services.AddSingleton(faceBookLikeButtonConfiguration); builder.Services.AddTransient <IVideoEditAccessTokenProvider, VideoEditAccessTokenProvider>(); builder.Services.AddSingleton <LocalizationClientService>(); builder.Services.AddTransient <HttpClientService>(); builder.Services.AddTransient <ToastifyService>(); builder.Services.AddTransient <VideoClientService>(); builder.Services.AddTransient <UserProfileClientService>(); builder.Services.AddTransient <VisitorTrackingClientService>(); builder.Services.AddTransient <UserClientService>(); builder.Services.AddTransient <SearchClientService>(); builder.Services.AddTransient <VideoCommentClientService>(); builder.Services.AddTransient <UserYouTubeChannelClientService>(); builder.Services.AddTransient <VideoPlaylistClientService>(); builder.Services.AddTransient <VideoJobClientService>(); builder.Services.AddTransient <VideoJobApplicationClientService>(); builder.Services.AddTransient <FeatureClientService>(); builder.Services.AddTransient <UserRequestClientService>(); builder.Services.AddTransient <UserMessageClientService>(); builder.Services.AddTransient <ClientSideErrorLogClientService>(); var host = builder.Build(); ModelsLocalizationSetup.ConfigureModelsLocalizers(host.Services); await host.SetDefaultCulture(); await host.RunAsync(); }