Skip to content

Commit 68ac598

Browse files
authored
Merge pull request #25 from umbraco/feature/disable-blobcache
Allow opting out of using Azure Blob for the image cache
2 parents cb625f5 + 8fa3042 commit 68ac598

File tree

1 file changed

+57
-3
lines changed

1 file changed

+57
-3
lines changed

src/Umbraco.StorageProviders.AzureBlob/DependencyInjection/AzureBlobMediaFileSystemExtensions.cs

Lines changed: 57 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,23 @@ public static class AzureBlobMediaFileSystemExtensions
2929
/// <returns>
3030
/// The <see cref="IUmbracoBuilder" />.
3131
/// </returns>
32+
/// <remarks>
33+
/// This will also configure the ImageSharp.Web middleware to use Azure Blob Storage to retrieve the original and cache the processed images.
34+
/// </remarks>
3235
/// <exception cref="System.ArgumentNullException">builder</exception>
3336
public static IUmbracoBuilder AddAzureBlobMediaFileSystem(this IUmbracoBuilder builder)
37+
=> builder.AddAzureBlobMediaFileSystem(true);
38+
39+
/// <summary>
40+
/// Registers an <see cref="IAzureBlobFileSystem" /> and it's dependencies configured for media.
41+
/// </summary>
42+
/// <param name="builder">The <see cref="IUmbracoBuilder" />.</param>
43+
/// <param name="useAzureBlobImageCache">If set to <c>true</c> also configures Azure Blob Storage for the image cache.</param>
44+
/// <returns>
45+
/// The <see cref="IUmbracoBuilder" />.
46+
/// </returns>
47+
/// <exception cref="System.ArgumentNullException">builder</exception>
48+
public static IUmbracoBuilder AddAzureBlobMediaFileSystem(this IUmbracoBuilder builder, bool useAzureBlobImageCache)
3449
{
3550
if (builder == null) throw new ArgumentNullException(nameof(builder));
3651

@@ -45,7 +60,10 @@ public static IUmbracoBuilder AddAzureBlobMediaFileSystem(this IUmbracoBuilder b
4560

4661
// ImageSharp image provider/cache
4762
builder.Services.Insert(0, ServiceDescriptor.Singleton<IImageProvider, AzureBlobFileSystemImageProvider>());
48-
builder.Services.AddUnique<IImageCache, AzureBlobFileSystemImageCache>();
63+
if (useAzureBlobImageCache)
64+
{
65+
builder.Services.AddUnique<IImageCache, AzureBlobFileSystemImageCache>();
66+
}
4967

5068
builder.SetMediaFileSystem(provider => provider.GetRequiredService<IAzureBlobFileSystemProvider>()
5169
.GetFileSystem(AzureBlobFileSystemOptions.MediaFileSystemName));
@@ -61,15 +79,33 @@ public static IUmbracoBuilder AddAzureBlobMediaFileSystem(this IUmbracoBuilder b
6179
/// <returns>
6280
/// The <see cref="IUmbracoBuilder" />.
6381
/// </returns>
82+
/// <remarks>
83+
/// This will also configure the ImageSharp.Web middleware to use Azure Blob Storage to retrieve the original and cache the processed images.
84+
/// </remarks>
6485
/// <exception cref="System.ArgumentNullException">builder
6586
/// or
6687
/// configure</exception>
6788
public static IUmbracoBuilder AddAzureBlobMediaFileSystem(this IUmbracoBuilder builder, Action<AzureBlobFileSystemOptions> configure)
89+
=> builder.AddAzureBlobMediaFileSystem(true, configure);
90+
91+
/// <summary>
92+
/// Registers a <see cref="IAzureBlobFileSystem" /> and it's dependencies configured for media.
93+
/// </summary>
94+
/// <param name="builder">The <see cref="IUmbracoBuilder" />.</param>
95+
/// <param name="useAzureBlobImageCache">If set to <c>true</c> also configures Azure Blob Storage for the image cache.</param>
96+
/// <param name="configure">An action used to configure the <see cref="AzureBlobFileSystemOptions" />.</param>
97+
/// <returns>
98+
/// The <see cref="IUmbracoBuilder" />.
99+
/// </returns>
100+
/// <exception cref="System.ArgumentNullException">builder
101+
/// or
102+
/// configure</exception>
103+
public static IUmbracoBuilder AddAzureBlobMediaFileSystem(this IUmbracoBuilder builder, bool useAzureBlobImageCache, Action<AzureBlobFileSystemOptions> configure)
68104
{
69105
if (builder == null) throw new ArgumentNullException(nameof(builder));
70106
if (configure == null) throw new ArgumentNullException(nameof(configure));
71107

72-
AddAzureBlobMediaFileSystem(builder);
108+
AddAzureBlobMediaFileSystem(builder, useAzureBlobImageCache);
73109

74110
builder.Services
75111
.AddOptions<AzureBlobFileSystemOptions>(AzureBlobFileSystemOptions.MediaFileSystemName)
@@ -86,15 +122,33 @@ public static IUmbracoBuilder AddAzureBlobMediaFileSystem(this IUmbracoBuilder b
86122
/// <returns>
87123
/// The <see cref="IUmbracoBuilder" />.
88124
/// </returns>
125+
/// <remarks>
126+
/// This will also configure the ImageSharp.Web middleware to use Azure Blob Storage to retrieve the original and cache the processed images.
127+
/// </remarks>
89128
/// <exception cref="System.ArgumentNullException">builder
90129
/// or
91130
/// configure</exception>
92131
public static IUmbracoBuilder AddAzureBlobMediaFileSystem(this IUmbracoBuilder builder, Action<AzureBlobFileSystemOptions, IServiceProvider> configure)
132+
=> builder.AddAzureBlobMediaFileSystem(true, configure);
133+
134+
/// <summary>
135+
/// Registers a <see cref="IAzureBlobFileSystem" /> and it's dependencies configured for media.
136+
/// </summary>
137+
/// <param name="builder">The <see cref="IUmbracoBuilder" />.</param>
138+
/// <param name="useAzureBlobImageCache">If set to <c>true</c> also configures Azure Blob Storage for the image cache.</param>
139+
/// <param name="configure">An action used to configure the <see cref="AzureBlobFileSystemOptions" />.</param>
140+
/// <returns>
141+
/// The <see cref="IUmbracoBuilder" />.
142+
/// </returns>
143+
/// <exception cref="System.ArgumentNullException">builder
144+
/// or
145+
/// configure</exception>
146+
public static IUmbracoBuilder AddAzureBlobMediaFileSystem(this IUmbracoBuilder builder, bool useAzureBlobImageCache, Action<AzureBlobFileSystemOptions, IServiceProvider> configure)
93147
{
94148
if (builder == null) throw new ArgumentNullException(nameof(builder));
95149
if (configure == null) throw new ArgumentNullException(nameof(configure));
96150

97-
AddAzureBlobMediaFileSystem(builder);
151+
AddAzureBlobMediaFileSystem(builder, useAzureBlobImageCache);
98152

99153
builder.Services
100154
.AddOptions<AzureBlobFileSystemOptions>(AzureBlobFileSystemOptions.MediaFileSystemName)

0 commit comments

Comments
 (0)