示例#1
0
        public static IApplicationBuilder UseWrapperizerApiExceptionHandler(this IApplicationBuilder builder)
        {
            var options = new ApiExceptionOptions();

            builder.UseSerilogRequestLogging();
            return(builder.UseMiddleware <ApiExceptionMiddleware>(options));
        }
示例#2
0
        internal static IApplicationBuilder UseExceptionHandlingMiddleware(this IApplicationBuilder builder, Action <ApiExceptionOptions> config)
        {
            var options = new ApiExceptionOptions();

            config(options);
            return(builder.UseMiddleware <ExceptionHandlingMiddleware>(options));
        }
    public static IApplicationBuilder UseApiExceptionHandler(this IApplicationBuilder builder, Action <ApiExceptionOptions> configureOptions)
    {
        var options = new ApiExceptionOptions();

        configureOptions(options);

        return(builder.UseMiddleware <ApiExceptionMiddleware>(options));
    }
示例#4
0
 public ApiExceptionMiddleware(ApiExceptionOptions options, RequestDelegate next)
 {
     _next    = next;
     _options = options;
 }
示例#5
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            var jwtSettings = new JwtSettings();

            Configuration.Bind(nameof(jwtSettings), jwtSettings);

            services.AddSingleton(jwtSettings);

            var apiExceptionOptions = new ApiExceptionOptions();

            Configuration.Bind(nameof(apiExceptionOptions), apiExceptionOptions);

            services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultScheme             = JwtBearerDefaults.AuthenticationScheme;
            }).AddJwtBearer(x =>
            {
                x.SaveToken = true;
                x.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey         = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(jwtSettings.Secret)),
                    ValidateIssuer           = false,
                    ValidateAudience         = false,
                    RequireExpirationTime    = false,
                    ValidateLifetime         = true
                };
            });

            services.AddMvc(options => options.Filters.Add <ValidationFilter>())
            .AddFluentValidation(c => c.RegisterValidatorsFromAssemblyContaining <Startup>());
            services.AddMetrics();
            services.AddControllers();
            services.AddDefaultAWSOptions(Configuration.GetAWSOptions());
            services.AddAWSService <IAmazonDynamoDB>();
            services.AddScoped <ITableConfig, PaymentsTableConfig>();
            services.AddScoped <IPaymentsRepository, PaymentsRepository>();
            services.AddScoped <IMockBankRepository, MockBankRepository>();


            services.AddApiVersioning(setupAction =>
            {
                setupAction.AssumeDefaultVersionWhenUnspecified = true;
                setupAction.DefaultApiVersion = new ApiVersion(1, 0);
                setupAction.ReportApiVersions = true;
                //  setupAction.ApiVersionReader = new HeaderApiVersionReader("api-version");
                //setupAction.ApiVersionReader = new MediaTypeApiVersionReader();
            });


            services.AddSwaggerGen(setupAction => {
                setupAction.SwaggerDoc("v1", new OpenApiInfo
                {
                    Version     = "v1",
                    Title       = "Checkout PaymentGateWay",
                    Description = "Checkout PaymentGateway Description",
                    Contact     = new OpenApiContact
                    {
                        Name  = "Aditya Arisetty",
                        Email = string.Empty
                    }
                });

                var xmlCommentsFile     = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
                var xmlCommentsFullPath = Path.Combine(AppContext.BaseDirectory, xmlCommentsFile);

                setupAction.IncludeXmlComments(xmlCommentsFullPath);

                setupAction.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme()
                {
                    Name         = "Authorization",
                    Type         = SecuritySchemeType.ApiKey,
                    Scheme       = "Bearer",
                    BearerFormat = "JWT",
                    In           = ParameterLocation.Header,
                    Description  = "Enter 'Bearer' [space] and then your valid token in the text input below.\r\n\r\nExample: \"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9\"",
                });

                setupAction.AddSecurityRequirement(new OpenApiSecurityRequirement
                {
                    {
                        new OpenApiSecurityScheme
                        {
                            Reference = new OpenApiReference
                            {
                                Type = ReferenceType.SecurityScheme,
                                Id   = "Bearer"
                            }
                        },
                        Array.Empty <string>()
                    }
                });
            });
        }
示例#6
0
        public static IApplicationBuilder UseApiExceptionHandler(this IApplicationBuilder builder)
        {
            var options = new ApiExceptionOptions();

            return(builder.UseMiddleware <MyFilterExceptionMiddleware>(options));
        }