/// <summary> /// Sets the the memory allocator configured in <see cref="Configuration.MemoryAllocator"/> of <see cref="ImageSharpMiddlewareOptions.Configuration"/>. /// </summary> /// <param name="builder">The core builder.</param> /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns> public static IImageSharpCoreBuilder SetMemoryAllocatorFromMiddlewareOptions(this IImageSharpCoreBuilder builder) { MemoryAllocator AllocatorResolver(IServiceProvider s) => s.GetRequiredService <IOptions <ImageSharpMiddlewareOptions> >().Value.Configuration.MemoryAllocator; builder.SetMemoryAllocator(AllocatorResolver); return(builder); }
/// <summary> /// Adds ImageSharp services to the specified <see cref="IServiceCollection" /> with the default options. /// </summary> /// <param name="services">The <see cref="IServiceCollection" /> to add services to.</param> /// <returns>An <see cref="IImageSharpBuilder"/> that can be used to further configure the ImageSharp services.</returns> public static IImageSharpBuilder AddImageSharp(this IServiceCollection services) { Guard.NotNull(services, nameof(services)); IImageSharpCoreBuilder builder = AddImageSharpCore(services); AddDefaultServices(builder); return(new ImageSharpBuilder(builder.Services)); }
/// <summary> /// Adds ImageSharp services to the specified <see cref="IServiceCollection" /> with the default options. /// </summary> /// <param name="services">The <see cref="IServiceCollection" /> to add services to.</param> /// <returns>An <see cref="IImageSharpBuilder"/> that can be used to further configure the ImageSharp services.</returns> public static IImageSharpBuilder AddImageSharp(this IServiceCollection services) { Guard.NotNull(services, nameof(services)); services.AddSingleton <IConfigureOptions <ImageSharpMiddlewareOptions>, ImageSharpConfiguration>(); IImageSharpCoreBuilder builder = AddImageSharpCore(services); AddDefaultServices(builder); return(new ImageSharpBuilder(builder.Services)); }
/// <summary> /// Adds ImageSharp services to the specified <see cref="IServiceCollection" /> with the given options. /// </summary> /// <param name="services">The <see cref="IServiceCollection" /> to add services to.</param> /// <param name="setupAction">An <see cref="Action{ImageSharpMiddlewareOptions}"/> to configure the provided <see cref="ImageSharpMiddlewareOptions"/>.</param> /// <returns>An <see cref="IImageSharpBuilder"/> that can be used to further configure the ImageSharp services.</returns> public static IImageSharpBuilder AddImageSharp(this IServiceCollection services, Action <ImageSharpMiddlewareOptions> setupAction) { Guard.NotNull(services, nameof(services)); IImageSharpCoreBuilder builder = AddImageSharpCore(services); builder.Services.Configure(setupAction); AddDefaultServices(builder); return(new ImageSharpBuilder(builder.Services)); }
/// <summary> /// Adds the default service to the service collection /// </summary> /// <param name="builder">The <see cref="IImageSharpCoreBuilder"/> that can be used to further configure the ImageSharp services</param> private static void AddDefaultServices(IImageSharpCoreBuilder builder) { builder.SetUriParser <QueryCollectionUriParser>(); builder.SetCache <PhysicalFileSystemCache>(); builder.AddResolver <PhysicalFileSystemResolver>(); builder.AddProcessor <ResizeWebProcessor>() .AddProcessor <FormatWebProcessor>() .AddProcessor <BackgroundColorWebProcessor>(); }
/// <summary> /// Adds the default service to the service collection. /// </summary> /// <param name="builder">The <see cref="IImageSharpCoreBuilder"/> that can be used to further configure the ImageSharp services.</param> private static void AddDefaultServices(IImageSharpCoreBuilder builder) { builder.SetRequestParser <QueryCollectionRequestParser>(); builder.SetMemoryAllocatorFromMiddlewareOptions(); builder.SetCache <PhysicalFileSystemCache>(); builder.SetCacheHash <CacheHash>(); builder.AddProvider <PhysicalFileSystemProvider>(); builder.AddProcessor <ResizeWebProcessor>() .AddProcessor <FormatWebProcessor>() .AddProcessor <BackgroundColorWebProcessor>(); }
/// <summary> /// Adds the default service to the service collection /// </summary> /// <param name="builder">The <see cref="IImageSharpCoreBuilder"/> that can be used to further configure the ImageSharp services</param> private static void AddDefaultServices(IImageSharpCoreBuilder builder) { builder.SetRequestParser <QueryCollectionRequestParser>(); builder.SetBufferManager <PooledBufferManager>(); builder.SetCache <PhysicalFileSystemCache>(); builder.SetCacheHash <CacheHash>(); builder.SetAsyncKeyLock <AsyncKeyLock>(); builder.AddResolver <PhysicalFileSystemResolver>(); builder.AddProcessor <ResizeWebProcessor>() .AddProcessor <FormatWebProcessor>() .AddProcessor <BackgroundColorWebProcessor>(); }
/// <summary> /// Sets the given <see cref="MemoryAllocator"/> adding it to the service collection. /// </summary> /// <typeparam name="TMemoryAllocator">The type of class implementing <see cref="MemoryAllocator"/>to add.</typeparam> /// <param name="builder">The core builder.</param> /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns> public static IImageSharpCoreBuilder SetMemoryAllocator <TMemoryAllocator>(this IImageSharpCoreBuilder builder) where TMemoryAllocator : MemoryAllocator { builder.Services.AddSingleton <MemoryAllocator, TMemoryAllocator>(); return(builder); }
/// <summary> /// Sets the given <see cref="MemoryAllocator"/> adding it to the service collection. /// </summary> /// <param name="builder">The core builder.</param> /// <param name="implementationFactory">The factory method for returning a <see cref="MemoryAllocator"/>.</param> /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns> public static IImageSharpCoreBuilder SetMemoryAllocator(this IImageSharpCoreBuilder builder, Func <IServiceProvider, MemoryAllocator> implementationFactory) { builder.Services.AddSingleton(implementationFactory); return(builder); }
/// <summary> /// Sets the given <see cref="IRequestParser"/> adding it to the service collection. /// </summary> /// <param name="builder">The core builder.</param> /// <param name="implementationFactory">The factory method for returning a <see cref="IRequestParser"/>.</param> /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns> public static IImageSharpCoreBuilder SetRequestParser(this IImageSharpCoreBuilder builder, Func <IServiceProvider, IRequestParser> implementationFactory) { builder.Services.AddSingleton(implementationFactory); return(builder); }
/// <summary> /// Adds the given <see cref="IImageResolver"/> to the resolver collection within the service collection /// </summary> /// <typeparam name="TResolver">The type of class implementing <see cref="IImageResolver"/>to add.</typeparam> /// <param name="builder">The <see cref="IImageSharpCoreBuilder"/></param> /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns> public static IImageSharpCoreBuilder AddResolver <TResolver>(this IImageSharpCoreBuilder builder) where TResolver : class, IImageResolver { builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IImageResolver, TResolver>()); return(builder); }
/// <summary> /// Sets the given <see cref="IImageCache"/> adding it to the service collection /// </summary> /// <typeparam name="TCache">The type of class implementing <see cref="IImageCache"/>to add.</typeparam> /// <param name="builder">The <see cref="IImageSharpCoreBuilder"/></param> /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns> public static IImageSharpCoreBuilder SetCache <TCache>(this IImageSharpCoreBuilder builder) where TCache : class, IImageCache { builder.Services.AddSingleton <IImageCache, TCache>(); return(builder); }
/// <summary> /// Sets the given <see cref="IUriParser"/> adding it to the service collection /// </summary> /// <typeparam name="TParser">The type of class implementing <see cref="IUriParser"/>to add.</typeparam> /// <param name="builder">The <see cref="IImageSharpCoreBuilder"/></param> /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns> public static IImageSharpCoreBuilder SetUriParser <TParser>(this IImageSharpCoreBuilder builder) where TParser : class, IUriParser { builder.Services.AddSingleton <IUriParser, TParser>(); return(builder); }
/// <summary> /// Sets the given <see cref="ICacheHash"/> adding it to the service collection. /// </summary> /// <typeparam name="TCacheHash">The type of class implementing <see cref="ICacheHash"/>to add.</typeparam> /// <param name="builder">The core builder.</param> /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns> public static IImageSharpCoreBuilder SetCacheHash <TCacheHash>(this IImageSharpCoreBuilder builder) where TCacheHash : class, ICacheHash { builder.Services.AddSingleton <ICacheHash, TCacheHash>(); return(builder); }
/// <summary> /// Sets the given <see cref="IBufferManager"/> adding it to the service collection /// </summary> /// <typeparam name="TBufferManager">The type of class implementing <see cref="IBufferManager"/>to add.</typeparam> /// <param name="builder">The <see cref="IImageSharpCoreBuilder"/></param> /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns> public static IImageSharpCoreBuilder SetBufferManager <TBufferManager>(this IImageSharpCoreBuilder builder) where TBufferManager : class, IBufferManager { builder.Services.AddSingleton <IBufferManager, TBufferManager>(); return(builder); }
/// <summary> /// Adds the given <see cref="IImageWebProcessor"/> to the processor collection within the service collection /// </summary> /// <typeparam name="TProcessor">The type of class implementing <see cref="IImageWebProcessor"/>to add.</typeparam> /// <param name="builder">The <see cref="IImageSharpCoreBuilder"/></param> /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns> public static IImageSharpCoreBuilder AddProcessor <TProcessor>(this IImageSharpCoreBuilder builder) where TProcessor : class, IImageWebProcessor { builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IImageWebProcessor, TProcessor>()); return(builder); }
/// <summary> /// Sets the given <see cref="ICacheHash"/> adding it to the service collection. /// </summary> /// <param name="builder">The core builder.</param> /// <param name="implementationFactory">The factory method for returning a <see cref="ICacheHash"/>.</param> /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns> public static IImageSharpCoreBuilder SetCacheHash(this IImageSharpCoreBuilder builder, Func <IServiceProvider, ICacheHash> implementationFactory) { builder.Services.AddSingleton(implementationFactory); return(builder); }
/// <summary> /// Sets the given <see cref="IUriParser"/> adding it to the service collection /// </summary> /// <typeparam name="TParser">The type of class implementing <see cref="IUriParser"/>to add.</typeparam> /// <param name="builder">The <see cref="IImageSharpCoreBuilder"/></param> /// <param name="implementationFactory">The factory method for returning a <see cref="IUriParser"/>"/></param> /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns> public static IImageSharpCoreBuilder SetUriParser <TParser>(this IImageSharpCoreBuilder builder, Func <IServiceProvider, TParser> implementationFactory) where TParser : class, IUriParser { builder.Services.AddSingleton(implementationFactory); return(builder); }
/// <summary> /// Sets the given <see cref="IAsyncKeyLock"/> adding it to the service collection. /// </summary> /// <typeparam name="TLock">The type of class implementing <see cref="IAsyncKeyLock"/>to add.</typeparam> /// <param name="builder">The core builder.</param> /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns> public static IImageSharpCoreBuilder SetAsyncKeyLock <TLock>(this IImageSharpCoreBuilder builder) where TLock : class, IAsyncKeyLock { builder.Services.AddSingleton <IAsyncKeyLock, TLock>(); return(builder); }
/// <summary> /// Sets the given <see cref="IImageCache"/> adding it to the service collection /// </summary> /// <typeparam name="TCache">The type of class implementing <see cref="IImageCache"/>to add.</typeparam> /// <param name="builder">The <see cref="IImageSharpCoreBuilder"/></param> /// <param name="implementationFactory">The factory method for returning a <see cref="IImageCache"/>"/></param> /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns> public static IImageSharpCoreBuilder SetCache <TCache>(this IImageSharpCoreBuilder builder, Func <IServiceProvider, TCache> implementationFactory) where TCache : class, IImageCache { builder.Services.AddSingleton(implementationFactory); return(builder); }
/// <summary> /// Sets the given <see cref="IAsyncKeyLock"/> adding it to the service collection. /// </summary> /// <param name="builder">The core builder.</param> /// <param name="implementationFactory">The factory method for returning a <see cref="IImageCache"/>.</param> /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns> public static IImageSharpCoreBuilder SetAsyncKeyLock(this IImageSharpCoreBuilder builder, Func <IServiceProvider, IAsyncKeyLock> implementationFactory) { builder.Services.AddSingleton(implementationFactory); return(builder); }
/// <summary> /// Adds the given <see cref="IImageResolver"/> to the resolver collection within the service collection /// </summary> /// <typeparam name="TResolver">The type of class implementing <see cref="IImageResolver"/>to add.</typeparam> /// <param name="builder">The <see cref="IImageSharpCoreBuilder"/></param> /// <param name="implementationFactory">The factory method for returning a <see cref="IImageResolver"/>"/></param> /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns> public static IImageSharpCoreBuilder AddResolver <TResolver>(this IImageSharpCoreBuilder builder, Func <IServiceProvider, TResolver> implementationFactory) where TResolver : class, IImageResolver { builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton(implementationFactory)); return(builder); }
/// <summary> /// Adds the given <see cref="IImageWebProcessor"/> to the processor collection within the service collection. /// </summary> /// <param name="builder">The core builder.</param> /// <param name="implementationFactory">The factory method for returning a <see cref="IImageProvider"/>.</param> /// <returns>The <see cref="IImageSharpCoreBuilder"/>.</returns> public static IImageSharpCoreBuilder AddProcessor(this IImageSharpCoreBuilder builder, Func <IServiceProvider, IImageWebProcessor> implementationFactory) { builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton(implementationFactory)); return(builder); }