// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddInjectionForSumObject(Configuration); services.AddInjectionForSumRepositories(); services.AddInjectionForSumServices(Configuration); services.AddHealthChecks() .AddCheck("DB Health Check", () => DbHealthCheckProvider.Check("")) .AddCheck("Mq Health Check", () => MqHealthCheckProvider.Check("")) .AddCheck <SendgridHealthCheckProvider>("Sendgrid Health Check"); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddControllers() .AddFluentValidation(fv => { fv.RunDefaultMvcValidationAfterFluentValidationExecutes = true; }) .AddJsonOptions(opt => opt.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter())); services.AddScoped <IProfanityWord, ProfanityWord>(); services.AddScoped <IProfanityService, ProfanityService>(); // Add database context to services Provides controllers access to the SqlServer data // Reads Database ConnectionString from AppSettings Define custom ConnectionString in appsettings.local.json string connString = System.Environment.GetEnvironmentVariable("DefaultConnection") ?? Configuration.GetConnectionString("DefaultConnection"); if (string.IsNullOrEmpty(connString)) { throw new Exception("ConnectionString for the database was not provided. Ensure ConnectionString is defined either in environment variables or appsettings."); } services.AddDbContext <ProfanityServiceDbContext>(options => { options.UseSqlServer(connString, b => b.MigrationsAssembly("Profanity.Data")); }); //healthcheck services.AddHealthChecks() .AddDbContextCheck <ProfanityServiceDbContext>("Context", null, new[] { "Database", "SQL" }) .AddCheck("Profanity service healthceck", () => DbHealthCheckProvider.CheckProfanityTables(connString), new[] { "Database", "SQL" }); services.AddScoped <IAccountService, AccountService>(); //jwt services.AddJwtService(Configuration); services.AddSwaggerGen(c => { c.SwaggerDoc($"v{MainApiVersion.MajorVersion}", new OpenApiInfo { Title = "Profanity.API", Version = $"V{MainApiVersion.MajorVersion}" }); c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme { In = ParameterLocation.Header, Description = "Write bearer token in the field", Scheme = "Bearer", Name = "Authorization", Type = SecuritySchemeType.ApiKey }); c.AddSecurityRequirement(new OpenApiSecurityRequirement { { new OpenApiSecurityScheme { Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" }, // Scheme = "oauth2", // Name = "Bearer", //In = ParameterLocation.Header }, Array.Empty <string>() } }); c.OperationFilter <SwaggerFileOperationFilter>(); c.SchemaFilter <EnumSchemaFilter>(); c.SchemaFilter <SwaggerSchemaFilter>(); c.DocumentFilter <DatabaseHealthChecksFilter>(); c.DocumentFilter <ServiceHealthChecksFilter>(); c.DocumentFilter <QuickHealthChecksFilter>(); }); services.AddTransient <IValidator <RequestModel>, RequestModelValidator>(); services.AddTransient <IValidator <ProfanityEntity>, ProfanityEntityValidator>(); services.AddAutoMapper(typeof(Startup)); services.Configure <ApiBehaviorOptions>(options => { options.SuppressModelStateInvalidFilter = true; }); //api versioning services.AddApiVersioning(config => { config.DefaultApiVersion = MainApiVersion; config.AssumeDefaultVersionWhenUnspecified = true; config.ReportApiVersions = true; config.Conventions.Controller <ProfanityController>().HasApiVersion(MainApiVersion); }); }