Beispiel #1
0
 public static IExceptionMappingBuilder SerializeAsProblemDetails(this IExceptionMappingBuilder builder, IConfiguration configuration)
 {
     builder.Services
     .Configure <ProblemDetailsSerializationOptions>(configuration)
     .AddSingleton(ctx => ctx.GetService <IOptionsMonitor <ProblemDetailsSerializationOptions> >().CurrentValue)
     ;
     return(builder.AddExceptionHandler <ProblemDetailsSerializationHandler>());
 }
 /// <summary>
 /// Registers all <see cref="IExceptionHandler"/> found in the assembly <see cref="ForEvolve.ExceptionMapper"/>
 /// with singleton lifetime.
 /// </summary>
 public static IExceptionMappingBuilder MapHttpFallback(this IExceptionMappingBuilder builder, Action <FallbackExceptionHandlerOptions> setup = null)
 {
     if (setup != null)
     {
         builder.Services.Configure(setup);
     }
     return(builder.AddExceptionHandler <FallbackExceptionHandler>());
 }
 /// <summary>
 /// Registers all <see cref="IExceptionHandler"/> found in the assembly <see cref="ForEvolve.ExceptionMapper"/>
 /// with singleton lifetime.
 /// </summary>
 public static IExceptionMappingBuilder MapCommonHttpExceptions(this IExceptionMappingBuilder builder)
 {
     return(builder.ScanHandlersFrom(
                s => s
                .FromAssembliesOf(typeof(CommonHttpExceptionHandlersMappingBuilderExtensions))
                .AddClasses(x => x.InExactNamespaceOf <ConflictExceptionHandler>()),
                ServiceLifetime.Singleton
                ));
 }
Beispiel #4
0
        public static IExceptionMappingBuilder ScanHandlersFrom(this IExceptionMappingBuilder builder, Func <ITypeSourceSelector, IImplementationTypeSelector> typeSelector, ServiceLifetime lifetime = ServiceLifetime.Singleton)
        {
            if (typeSelector == null)
            {
                throw new ArgumentNullException(nameof(typeSelector));
            }

            builder.Services.Scan(s => typeSelector(s)
                                  .AddClasses(f => f.AssignableTo <IExceptionHandler>())
                                  .As <IExceptionHandler>()
                                  .WithLifetime(lifetime)
                                  );
            return(builder);
        }
Beispiel #5
0
        public static IExceptionMappingBuilder Map <TException>(this IExceptionMappingBuilder builder, Action <FluentMapperBuilder <TException> > mapperAction)
            where TException : Exception
        {
            if (mapperAction == null)
            {
                throw new ArgumentNullException(nameof(mapperAction));
            }

            var handler      = new FluentExceptionHandler <TException>();
            var fluentMapper = new FluentMapperBuilder <TException>(builder, handler);

            builder.AddExceptionHandler(handler);
            mapperAction.Invoke(fluentMapper);
            return(builder);
        }
Beispiel #6
0
 public FluentMapperBuilder(IExceptionMappingBuilder builder, FluentExceptionHandler <TException> handler)
 {
     Builder = builder ?? throw new ArgumentNullException(nameof(builder));
     Handler = handler ?? throw new ArgumentNullException(nameof(handler));
 }
 public static IExceptionMappingBuilder AddExceptionHandler <THandler>(this IExceptionMappingBuilder builder)
     where THandler : class, IExceptionHandler
 {
     builder.Services.AddSingleton <IExceptionHandler, THandler>();
     return(builder);
 }
Beispiel #8
0
 /// <typeparam name="T">The type in which assembly that should be scanned.</typeparam>
 public static IExceptionMappingBuilder ScanHandlersFromAssemblyOf <T>(this IExceptionMappingBuilder builder, ServiceLifetime lifetime = ServiceLifetime.Singleton)
 {
     return(builder.ScanHandlersFrom(s => s.FromAssemblyOf <T>(), lifetime));
 }
Beispiel #9
0
 public static IExceptionMappingBuilder SerializeAsProblemDetails(this IExceptionMappingBuilder builder)
 => SerializeAsProblemDetails(builder, new ProblemDetailsSerializationOptions());
Beispiel #10
0
 public static IExceptionMappingBuilder SerializeAsProblemDetails(this IExceptionMappingBuilder builder, ProblemDetailsSerializationOptions options)
 {
     builder.Services.AddSingleton(options);
     return(builder.AddExceptionHandler <ProblemDetailsSerializationHandler>());
 }