using System; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Bit.Core; using Stripe; using Bit.Core.Utilities; using Serilog.Events; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection.Extensions; using Bit.Core.Identity; using Microsoft.AspNetCore.Routing; namespace Bit.Billing { public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { // Options services.AddOptions(); // Settings var globalSettings = services.AddGlobalSettingsServices(Configuration); services.Configure(Configuration.GetSection("BillingSettings")); // Stripe Billing StripeConfiguration.SetApiKey(globalSettings.StripeApiKey); // Repositories services.AddSqlServerRepositories(globalSettings); // Paypal Client services.AddSingleton(); // Context services.AddScoped(); // Identity services.AddCustomIdentityServices(globalSettings); //services.AddPasswordlessIdentityServices(globalSettings); // Services services.AddBaseServices(); services.AddDefaultServices(globalSettings); services.TryAddSingleton(); // Mvc services.AddMvc(config => { config.Filters.Add(new LoggingExceptionHandlerFilterAttribute()); }); services.Configure(options => options.LowercaseUrls = true); // Jobs service Jobs.JobsHostedService.AddJobsServices(services); services.AddHostedService(); } public void Configure( IApplicationBuilder app, IHostingEnvironment env, IApplicationLifetime appLifetime, GlobalSettings globalSettings, ILoggerFactory loggerFactory) { loggerFactory.AddSerilog(app, env, appLifetime, globalSettings, (e) => { var context = e.Properties["SourceContext"].ToString(); if(e.Level == LogEventLevel.Information && (context.StartsWith("\"Bit.Billing.Jobs") || context.StartsWith("\"Bit.Core.Jobs"))) { return true; } return e.Level >= LogEventLevel.Error; }); if(env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseAuthentication(); app.UseStaticFiles(); app.UseMvcWithDefaultRoute(); } } }