Esempio n. 1
0
        /// <summary>
        /// Configures Firestorm Fluent API using the given context type.
        /// </summary>
        public static IFirestormServicesBuilder AddFluent <TApiContext>(this IFirestormServicesBuilder builder)
            where TApiContext : ApiContext, new()
        {
            var context = new TApiContext();

            return(builder.AddFluent(context));
        }
        /// <summary>
        /// Configures Firestorm Stems using Stem types from the given <see cref="Assembly"/> within the given <see cref="baseNamespace"/>.
        /// </summary>
        public static IFirestormServicesBuilder AddRoots(this IFirestormServicesBuilder builder, Assembly assembly, string baseNamespace)
        {
            builder.AddDerivedRoots();

            builder.Add(new AxisTypesLocation <Root>(assembly, baseNamespace));
            return(builder);
        }
Esempio n. 3
0
        /// <summary>
        /// Configures a Firestorm Data source for Entity Framework Core.
        /// </summary>
        public static IFirestormServicesBuilder AddEntityFramework <TDbContext>(this IFirestormServicesBuilder builder, Action <FirestormEntityOptions> configureAction)
            where TDbContext : DbContext
        {
            var options = new FirestormEntityOptions();

            configureAction(options);
            return(builder.AddEntityFramework <TDbContext>(options));
        }
Esempio n. 4
0
        /// <summary>
        /// Configures the data source for this Firestorm API.
        /// </summary>
        public static IFirestormServicesBuilder AddDataSource(this IFirestormServicesBuilder builder, IDataSource dataSource)
        {
            //builder.AddDataSourceTypeFinder();
            //builder.AddDataSourceRoots();

            builder.Add <IDataSource>(dataSource);
            return(builder);
        }
        /// <summary>
        /// Configures Firestorm endpoints.
        /// </summary>
        public static IFirestormServicesBuilder AddEndpoints(this IFirestormServicesBuilder builder, Func <IServiceProvider, EndpointConfiguration> factoryFunction)
        {
            builder.AddEndpointsInvoker();

            builder.Add <EndpointConfiguration>(factoryFunction);

            return(builder);
        }
        /// <summary>
        /// Configures Firestorm endpoints.
        /// </summary>
        public static IFirestormServicesBuilder AddEndpoints(this IFirestormServicesBuilder builder, EndpointConfiguration config)
        {
            builder.AddEndpointsInvoker();

            builder.Add <EndpointConfiguration>(config);

            return(builder);
        }
        /// <summary>
        /// Configures Firestorm endpoints.
        /// Assumes <see cref="EndpointConfiguration"/> is already configured elsewhere.
        /// </summary>
        public static IFirestormServicesBuilder AddEndpointsInvoker(this IFirestormServicesBuilder builder)
        {
            builder
            .Add <IRequestInvoker, EndpointsRequestInvoker>()
            .EnableFeatures <EndpointServices>()
            .AddFeature <EndpointServices, DefaultEndpointFeature>();

            return(builder);
        }
        /// <summary>
        /// Configures the <see cref="DerivedRootsResourceFactory"/>.
        /// </summary>
        private static IFirestormServicesBuilder AddDerivedRoots(this IFirestormServicesBuilder builder)
        {
            builder.Add <IRootResourceFactory>(sp => new DerivedRootsResourceFactory
            {
                RootTypeGetter = sp.GetService <AxisTypesLocation <Root> >().GetTypeGetter()
            });

            return(builder);
        }
Esempio n. 9
0
        /// <summary>
        /// Configures Firestorm Fluent API using a <see cref="apiContext"/>.
        /// </summary>
        public static IFirestormServicesBuilder AddFluent(this IFirestormServicesBuilder builder, IApiContext apiContext)
        {
            builder.AddStartResourceFactory(sp => new FluentStartResourceFactory
            {
                ApiContext = apiContext,
                DataSource = sp.GetService <IDataSource>()
            });

            return(builder);
        }
        /// <summary>
        /// Configures the <see cref="DataSourceRootResourceFactory"/> for Stems.
        /// </summary>
        internal static IFirestormServicesBuilder AddDataSourceRoots(this IFirestormServicesBuilder builder)
        {
            builder.Add <IRootResourceFactory>(sp => new DataSourceRootResourceFactory
            {
                DataSource     = sp.GetService <IDataSource>(),
                StemTypeGetter = sp.GetService <AxisTypesLocation <Stem> >().GetTypeGetter(),
                RootBehavior   = DataSourceRootAttributeBehavior.UseAllStemsExceptDisallowed // TODO support this option
            });

            return(builder);
        }
        /// <summary>
        /// Configures Firestorm endpoints.
        /// </summary>
        public static IFirestormServicesBuilder AddEndpoints(this IFirestormServicesBuilder builder, Action <EndpointConfiguration> configureAction)
        {
            builder.AddEndpointsInvoker();

            var config = new EndpointConfiguration();

            configureAction(config);
            builder.Add <EndpointConfiguration>(config);

            return(builder);
        }
Esempio n. 12
0
        /// <summary>
        /// Configures Firestorm Fluent API by automatically finding the root item types and automatically configuring them.
        /// </summary>
        public static IFirestormServicesBuilder AddFluent(this IFirestormServicesBuilder builder, AutoConfiguration configuration)
        {
            builder.AddDataSourceTypeFinder();

            builder.AddStartResourceFactory(sp => new FluentStartResourceFactory
            {
                ApiContext = new AutomaticApiContext(sp.GetService <IItemTypeFinder>().FindItemTypes(), configuration),
                DataSource = sp.GetService <IDataSource>()
            });

            return(builder);
        }
Esempio n. 13
0
        /// <summary>
        /// Configures a Firestorm Data source for Entity Framework Core.
        /// </summary>
        public static IFirestormServicesBuilder AddEntityFramework <TDbContext>(this IFirestormServicesBuilder builder, FirestormEntityOptions options)
            where TDbContext : DbContext
        {
            builder.AddDataSource(sp =>
            {
                var requestProvider  = sp.GetRequestServiceProvider();
                var dbContextFactory = new EntitiesContextFactory <TDbContext>(requestProvider, options);
                return(new EFCoreDataSource <TDbContext>(dbContextFactory));
            });

            return(builder);
        }
Esempio n. 14
0
        /// <summary>
        /// Configures Firestorm Stems using Stem types from the given <see cref="Assembly"/> within the given <see cref="baseNamespace"/>.
        /// </summary>
        public static IFirestormServicesBuilder AddStems(this IFirestormServicesBuilder builder, Assembly assembly, string baseNamespace)
        {
            builder.EnableFeatures <StemsServices>()
            .AddFeature <StemsServices, DefaultStemsFeature>();

            builder.AddStartResourceFactory(sp => new StemsStartResourceFactory
            {
                StemsServices       = sp.GetService <StemsServices>(),
                RootResourceFactory = CreateRootResourceFactory(sp)
            });

            builder.Add(new AxisTypesLocation <Stem>(assembly, baseNamespace));

            return(builder);
        }
Esempio n. 15
0
        public static IFirestormServicesBuilder EnableFeatures <T>(this IFirestormServicesBuilder builder)
            where T : class, new()
        {
            return(builder
                   .Add <T>(sp =>
            {
                var target = new T();

                foreach (IFeature <T> feature in sp.GetServices <IFeature <T> >())
                {
                    feature.AddTo(target);
                }

                return target;
            }));
        }
Esempio n. 16
0
 public static IFirestormServicesBuilder AddFeature <T, TFeature>(this IFirestormServicesBuilder builder)
     where TFeature : class, IFeature <T>
 {
     return(builder.Add <IFeature <T>, TFeature>());
 }
 public static IFirestormServicesBuilder Add(this IFirestormServicesBuilder builder, Type serviceType)
 {
     return(builder.Add(serviceType, serviceType));
 }
        /// <summary>
        /// Configures Firestorm endpoints with the default settings.
        /// </summary>
        public static IFirestormServicesBuilder AddEndpoints(this IFirestormServicesBuilder builder)
        {
            builder.AddEndpoints(new EndpointConfiguration());

            return(builder);
        }
 /// <summary>
 /// Configures a Firestorm Data source for Entity Framework 6.
 /// </summary>
 public static IFirestormServicesBuilder AddEntityFramework <TDbContext>(this IFirestormServicesBuilder builder)
     where TDbContext : DbContext, new()
 {
     builder.AddDataSource(new EntitiesDataSource <TDbContext>());
     return(builder);
 }
Esempio n. 20
0
 /// <summary>
 /// Configures a <see cref="IItemTypeFinder"/> that finds the entity types in the data source.
 /// </summary>
 internal static IFirestormServicesBuilder AddDataSourceTypeFinder(this IFirestormServicesBuilder builder)
 {
     builder.Add <IItemTypeFinder, DataSourceTypeFinder>();
     return(builder);
 }
Esempio n. 21
0
 /// <summary>
 /// Configures a Firestorm Data source for Entity Framework Core.
 /// </summary>
 public static IFirestormServicesBuilder AddEntityFramework <TDbContext>(this IFirestormServicesBuilder builder)
     where TDbContext : DbContext
 {
     return(builder.AddEntityFramework <TDbContext>(new FirestormEntityOptions()));
 }
 public static IFirestormServicesBuilder Add <TService>(this IFirestormServicesBuilder builder)
     where TService : class
 {
     return(builder.Add(typeof(TService), typeof(TService)));
 }
Esempio n. 23
0
        /// <summary>
        /// Configures Firestorm Fluent API using a <see cref="buildAction"/> delegate.
        /// </summary>
        public static IFirestormServicesBuilder AddFluent(this IFirestormServicesBuilder builder, Action <IApiBuilder> buildAction)
        {
            var context = new DelegateApiContext(buildAction);

            return(builder.AddFluent(context));
        }
 /// <summary>
 /// Configures Firestorm Stems using Stem types from the application's entry assembly.
 /// </summary>
 public static IFirestormServicesBuilder AddRoots(this IFirestormServicesBuilder builder)
 {
     return(builder.AddRoots(Assembly.GetCallingAssembly()));
 }
 /// <summary>
 /// Configures the start resource for this Firestorm API.
 /// </summary>
 public static IFirestormServicesBuilder AddStartResourceFactory(this IFirestormServicesBuilder builder, IStartResourceFactory startResourceFactory)
 {
     builder.Add <IStartResourceFactory>(startResourceFactory);
     return(builder);
 }
Esempio n. 26
0
 public void Configure(IFirestormServicesBuilder builder)
 {
     builder.AddFluent <FootballApiContext>();
 }
 /// <summary>
 /// Configures Firestorm Stems using Stem types from the given <see cref="Assembly"/>.
 /// </summary>
 public static IFirestormServicesBuilder AddRoots(this IFirestormServicesBuilder builder, Assembly assembly)
 {
     return(builder.AddRoots(assembly, assembly.GetName().Name));
 }
 public static IFirestormServicesBuilder Add <TAbstraction, TImplementation>(this IFirestormServicesBuilder builder)
     where TImplementation : class, TAbstraction
     where TAbstraction : class
 {
     return(builder.Add(typeof(TAbstraction), typeof(TImplementation)));
 }
 /// <summary>
 /// Configures the start resource for this Firestorm API.
 /// </summary>
 public static IFirestormServicesBuilder AddStartResourceFactory(this IFirestormServicesBuilder builder, Func <IServiceProvider, IStartResourceFactory> startResourceFactoryFunc)
 {
     builder.Add <IStartResourceFactory>(startResourceFactoryFunc);
     return(builder);
 }
Esempio n. 30
0
 public void Configure(IFirestormServicesBuilder builder)
 {
     builder.AddStems();
 }