Пример #1
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            IKernel            ninjectKernel     = new StandardKernel(new InterfacesRegistrationsBLL(Configuration.GetConnectionString("BookshelfDatabase")));
            IUnitOfWorkService unitOfWorkService = ninjectKernel.Get <IUnitOfWorkService>();

            UnitOfWorkExceptionMessageLocalization = ninjectKernel.Get <IUnitOfWorkExceptionMessageLocalization>();
            services.AddScoped <IDataBaseService <AuthorDTO> >(o => new AuthorService(unitOfWorkService, UnitOfWorkExceptionMessageLocalization));
            services.AddScoped <IDataBaseService <BookDTO> >(o => new BookService(unitOfWorkService, UnitOfWorkExceptionMessageLocalization));
            services.AddScoped <IDataBaseService <GenreDTO> >(o => new GenreService(unitOfWorkService, UnitOfWorkExceptionMessageLocalization));
            services.AddScoped <IDataBaseService <TagDTO> >(o => new TagService(unitOfWorkService, UnitOfWorkExceptionMessageLocalization));
            services.AddScoped <IReportService>(o => new ReportService(unitOfWorkService, UnitOfWorkExceptionMessageLocalization));
            services.AddScoped <IAccountService>(o => new AccountService(unitOfWorkService, UnitOfWorkExceptionMessageLocalization));
            services.AddAutoMapper();
            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(cfg =>
            {
                cfg.RequireHttpsMetadata      = false;
                cfg.SaveToken                 = true;
                cfg.TokenValidationParameters = new TokenValidationParameters()
                {
                    ValidIssuer      = "me",
                    ValidAudience    = "you",
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("rlyaKithdrYVl6Z80ODU350md"))         //Secret
                };
            });
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
            BLLAutoMapperConfiguration.Configure();
            services.AddSwaggerDocumentation();
        }
Пример #2
0
 public GenreService(IUnitOfWorkService unitOfWorkService, IUnitOfWorkExceptionMessageLocalization unitOfWorkExceptionMessageLocalization)
 {
     UnitOfWork = unitOfWorkService.GetIUnitOfWorkBookshelfContext();
     UnitOfWorkExceptionMessage = unitOfWorkExceptionMessageLocalization;
 }
        private static Task HandleExceptionAsync(HttpContext context, Exception exception, IUnitOfWorkExceptionMessageLocalization unitOfWorkExceptionMessageLocalization)
        {
            var code             = HttpStatusCode.InternalServerError; // 500 if unexpected
            var exceptionMessage = JsonConvert.SerializeObject(new { error = exception.Message });

            if (exception is NotFoundException)
            {
                code = HttpStatusCode.NotFound;
            }
            else if (exception is UnauthorizedException)
            {
                code = HttpStatusCode.Unauthorized;
            }
            else if (exception is ForbiddenException)
            {
                code = HttpStatusCode.Forbidden;
            }
            else if (exception is BadRequestException)
            {
                code = HttpStatusCode.BadRequest;
            }
            else if (exception is DbUpdateConcurrencyException)
            {
                code             = HttpStatusCode.Conflict;
                exceptionMessage = JsonConvert.SerializeObject(new
                {
                    error = unitOfWorkExceptionMessageLocalization.DbUpdateConcurrencyException.RecordToEditWasModifiedAnotherUser
                });
            }
            context.Response.ContentType = "application/json";
            context.Response.StatusCode  = (int)code;
            return(context.Response.WriteAsync(exceptionMessage));
        }
Пример #4
0
 public static IApplicationBuilder UseErrorHandlingMiddleware(this IApplicationBuilder builder, IUnitOfWorkExceptionMessageLocalization unitOfWorkExceptionMessageLocalization)
 {
     return(builder.UseMiddleware <ErrorHandlingMiddleware>(unitOfWorkExceptionMessageLocalization));
 }
 public ErrorHandlingMiddleware(RequestDelegate next, IUnitOfWorkExceptionMessageLocalization unitOfWorkExceptionMessageLocalization)
 {
     _next = next;
     _unitOfWorkExceptionMessageLocalization = unitOfWorkExceptionMessageLocalization;
 }