/// <summary> /// Adds <see cref="IFileService"/> using in-memory storage as the backing store. Only for testing purposes. /// </summary> /// <param name="services">Specifies the contract for a collection of service descriptors.</param> /// <param name="configure">Configuration action.</param> public static IServiceCollection AddFiles(this IServiceCollection services, Action <FileServiceConfigurationBuilder> configure) { var builder = new FileServiceConfigurationBuilder(services); services.AddScoped <IFileServiceFactory, DefaultFileServiceFactory>(); configure?.Invoke(builder); return(services); }
/// <summary> /// Adds <see cref="FileServiceLocal"/> implementation. /// </summary> public static FileServiceConfigurationBuilder AddFileSystem(this FileServiceConfigurationBuilder builder, string name, Action <FileServiceLocal.FileServiceOptions> configure = null) { builder.Services.AddKeyedService <IFileService, FileServiceLocal, string>( key: name, serviceProvider => GetFileServiceLocal(serviceProvider, configure), serviceLifetime: ServiceLifetime.Transient ); return(builder); }
/// <summary> /// Adds <see cref="FileServiceAzureStorage"/> implementation. /// </summary> public static FileServiceConfigurationBuilder AddAzureStorage(this FileServiceConfigurationBuilder builder, string name, Action <FileServiceAzureStorage.FileServiceOptions> configure = null) { builder.Services.AddKeyedService <IFileService, FileServiceAzureStorage, string>( key: name, serviceProvider => { var options = new FileServiceAzureStorage.FileServiceOptions { ConnectionStringName = FileServiceAzureStorage.CONNECTION_STRING_NAME, ContainerName = serviceProvider.GetRequiredService <IHostEnvironment>().EnvironmentName }; configure?.Invoke(options); var connectionString = serviceProvider.GetRequiredService <IConfiguration>().GetConnectionString(options.ConnectionStringName); return(new FileServiceAzureStorage(connectionString, options.ContainerName)); }, serviceLifetime: ServiceLifetime.Transient ); return(builder); }
/// <summary> /// Adds <see cref="FileServiceInMemory"/> implementation. /// </summary> public static FileServiceConfigurationBuilder AddFilesInMemory(this FileServiceConfigurationBuilder builder, string name) { builder.Services.AddKeyedService <IFileService, FileServiceInMemory, string>(name, serviceLifetime: ServiceLifetime.Transient); return(builder); }
/// <summary> /// Adds <see cref="FileServiceInMemory"/> implementation. /// </summary> public static FileServiceConfigurationBuilder AddFilesInMemory(this FileServiceConfigurationBuilder builder) { AddFilesInMemory(builder.Services); return(builder); }
/// <summary> /// Adds <see cref="FileServiceAzureStorage"/> implementation. /// </summary> public static FileServiceConfigurationBuilder AddAzureStorage(this FileServiceConfigurationBuilder builder, Action <FileServiceAzureStorage.FileServiceOptions> configure = null) { AddFilesAzure(builder.Services, configure); return(builder); }
/// <summary> /// Adds <see cref="FileServiceLocal"/> implementation. /// </summary> public static FileServiceConfigurationBuilder AddFileSystem(this FileServiceConfigurationBuilder builder, Action <FileServiceLocal.FileServiceOptions> configure = null) { AddFilesLocal(builder.Services, configure); return(builder); }