Example #1
0
 /// <summary>
 /// Add UploadQueue service to NextApi
 /// </summary>
 /// <param name="serverBuilder"></param>
 /// <param name="serviceName"></param>
 /// <param name="uploadQueueModelsAssemblyName"></param>
 /// <returns></returns>
 public static NextApiServiceBuilder AddUploadQueueService(this NextApiBuilder serverBuilder,
                                                           string uploadQueueModelsAssemblyName, string serviceName = null)
 {
     serverBuilder.ServiceCollection.AddTransient(c =>
                                                  new UploadQueueService(
                                                      c.GetService <IColumnChangesLogger>(),
                                                      c.GetService <IUnitOfWork>(), c,
                                                      uploadQueueModelsAssemblyName));
     return(serverBuilder.AddService <UploadQueueService>(serviceName, false));
 }
Example #2
0
 /// <summary>
 /// Add default NextApi entity service for entity type
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="serviceName">Service name (optional, by default is it entity name)</param>
 /// <typeparam name="TEntityDto">DTO type for entity</typeparam>
 /// <typeparam name="TEntity">Entity type</typeparam>
 /// <typeparam name="TKey">Entity key type</typeparam>
 /// <returns>Service builder for detailed configuration</returns>
 public static NextApiServiceBuilder AddEntityService <TEntityDto,
                                                       TEntity, TKey>(this NextApiBuilder builder,
                                                                      string serviceName = null)
     where TEntityDto : class, IEntityDto <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (string.IsNullOrWhiteSpace(serviceName))
     {
         serviceName = typeof(TEntity).Name;
     }
     return(builder.AddService <NextApiEntityService <TEntityDto, TEntity, TKey> >(serviceName));
 }
Example #3
0
        /// <summary>
        /// Used to initialize NextApi services
        /// <param name="options">NextApi configuration action</param>
        /// <param name="serviceCollection">Service collection instance</param>
        /// <remarks>If assemblyWithNextApiServices is null. NextApi uses calling assembly (in other words assembly of Startup.cs)</remarks>
        /// </summary>
        public static IServiceCollection AddNextApiServices(this IServiceCollection serviceCollection,
                                                            Action <NextApiBuilder> options = null)
        {
            var nextApiBuilder = new NextApiBuilder(serviceCollection);

            options?.Invoke(nextApiBuilder);

            // mvc
            serviceCollection.AddMvc(mvcOptions => mvcOptions.EnableEndpointRouting = false);
            // signalr
            serviceCollection
            .AddSignalR(srOptions =>
            {
                srOptions.EnableDetailedErrors      = true;
                srOptions.MaximumReceiveMessageSize = nextApiBuilder.MaximumReceiveMessageSize;
            })
            .AddMessagePackProtocol(mpOptions =>
            {
                mpOptions.FormatterResolvers = new List <IFormatterResolver>
                {
                    TypelessContractlessStandardResolver.Instance
                };
            });
            if (nextApiBuilder.DisablePermissionValidation)
            {
                serviceCollection.AddTransient <INextApiPermissionProvider, DisabledNextApiPermissionProvider>();
            }

            serviceCollection.AddScoped <INextApiUserAccessor, NextApiUserAccessor>();
            serviceCollection.AddScoped <INextApiRequest, NextApiRequest>();
            serviceCollection.AddScoped <INextApiEventManager, NextApiEventManager>();
            // handles all requests redirected from HTTP and SignalR
            serviceCollection.AddScoped <NextApiHandler>();
            // handles all request from clients over HTTP
            serviceCollection.AddScoped <NextApiHttp>();

            serviceCollection.AddSingleton(c => new NextApiServiceRegistry(nextApiBuilder.ServiceRegistry));

            return(serviceCollection);
        }