Exemplo n.º 1
0
        // 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");
        }
Exemplo n.º 2
0
        // 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);
            });
        }