// ReSharper disable once InconsistentNaming
 public static IFluentRestBuilder AddHAL(
     this IFluentRestBuilder builder)
 {
     RegisterMappings(builder);
     builder.Services.TryAddScoped(
         typeof(ICollectionMappingPipeFactory <,>), typeof(CollectionMappingPipeFactory <,>));
     builder.Services
     .TryAddScoped <IRestCollectionLinkGenerator, RestCollectionLinkGenerator>();
     return(builder);
 }
        public static IFluentRestBuilder AddEntityFrameworkCorePipes <TContext>(
            this IFluentRestBuilder builder)
            where TContext : DbContext
        {
            RegisterEntityFrameworkRelatedServices <TContext>(builder.Services);
            RegisterPipes(builder.Services);
            RegisterTransformations(builder.Services);

            return(builder);
        }
Ejemplo n.º 3
0
        public static IFluentRestBuilder RegisterUrlHelper(this IFluentRestBuilder builder)
        {
            if (builder.Services.Any(d => d.ServiceType == typeof(IUrlHelper)))
            {
                return(builder);
            }

            builder.Services.TryAddSingleton <IActionContextAccessor, ActionContextAccessor>();
            builder.Services.TryAddScoped(serviceProvider =>
            {
                var actionContextAccessor = serviceProvider.GetService <IActionContextAccessor>();
                var urlHelperFactory      = serviceProvider.GetService <IUrlHelperFactory>();
                return(urlHelperFactory.GetUrlHelper(actionContextAccessor.ActionContext));
            });

            return(builder);
        }
 public static IFluentRestBuilder AddRestMapper <TInput, TOutput>(
     this IFluentRestBuilder builder,
     Func <TInput, TOutput> mapping,
     Action <RestMapper <TInput, TOutput> > configuration = null)
     where TOutput : RestEntity
 {
     builder.Services.AddScoped <IMapper <TInput, TOutput> >(
         serviceProvider =>
     {
         var urlHelper = serviceProvider.GetService <IScopedStorage <IUrlHelper> >()?.Value
                         ?? serviceProvider.GetService <IUrlHelper>();
         var mapper = new RestMapper <TInput, TOutput>(mapping, urlHelper);
         configuration?.Invoke(mapper);
         return(mapper);
     });
     return(builder);
 }
 private static void RegisterMappings(IFluentRestBuilder builder)
 {
     builder.Services.TryAddScoped <IMapperFactory, MapperFactory>();
     builder.Services.TryAddScoped(typeof(IMapperFactory <>), typeof(MapperFactory <>));
     builder.Services.TryAddTransient(typeof(IMappingBuilder <>), typeof(MappingBuilder <>));
 }