/// <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);
        }
Exemple #2
0
        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();
        }