Resvolution - ImageUrlProviderResolver
This commit is contained in:
@@ -9,6 +9,7 @@ using Umbraco.Core.Strings;
|
||||
using Umbraco.Core._Legacy.PackageActions;
|
||||
using Umbraco.Web.Editors;
|
||||
using Umbraco.Web.HealthCheck;
|
||||
using Umbraco.Web.Media;
|
||||
using Umbraco.Web.Mvc;
|
||||
using Umbraco.Web.PublishedCache;
|
||||
using Umbraco.Web.Routing;
|
||||
@@ -156,6 +157,9 @@ namespace Umbraco.Web
|
||||
public static FilteredControllerFactoryCollection FilteredControllerFactories
|
||||
=> Container.GetInstance<FilteredControllerFactoryCollection>();
|
||||
|
||||
internal static ImageUrlProviderCollection ImageUrlProviders
|
||||
=> Container.GetInstance<ImageUrlProviderCollection>();
|
||||
|
||||
#endregion
|
||||
|
||||
#region Core Getters
|
||||
|
||||
@@ -82,7 +82,7 @@ namespace Umbraco.Web.Media
|
||||
|
||||
private static IImageUrlProvider GetProvider(string provider)
|
||||
{
|
||||
return ImageUrlProviderResolver.Current.GetProvider(provider);
|
||||
return Current.ImageUrlProviders[provider];
|
||||
}
|
||||
|
||||
private static object GetContentFromCache(int nodeIdInt, string field)
|
||||
|
||||
28
src/Umbraco.Web/Media/ImageUrlProviderCollection.cs
Normal file
28
src/Umbraco.Web/Media/ImageUrlProviderCollection.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.DependencyInjection;
|
||||
using Umbraco.Core.Media;
|
||||
using Umbraco.Web.Media.ImageUrlProviders;
|
||||
|
||||
namespace Umbraco.Web.Media
|
||||
{
|
||||
internal class ImageUrlProviderCollection : BuilderCollectionBase<IImageUrlProvider>
|
||||
{
|
||||
public ImageUrlProviderCollection(IEnumerable<IImageUrlProvider> items)
|
||||
: base(items)
|
||||
{ }
|
||||
|
||||
public IImageUrlProvider this[string name]
|
||||
{
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(name)) name = ImageUrlProvider.DefaultName;
|
||||
var provider = this.FirstOrDefault(x => x.Name.InvariantEquals(name));
|
||||
if (provider == null) throw new InvalidOperationException($"No provider exists with name \"{name}\".");
|
||||
return provider;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
14
src/Umbraco.Web/Media/ImageUrlProviderCollectionBuilder.cs
Normal file
14
src/Umbraco.Web/Media/ImageUrlProviderCollectionBuilder.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
using LightInject;
|
||||
using Umbraco.Core.DependencyInjection;
|
||||
using Umbraco.Core.Media;
|
||||
|
||||
namespace Umbraco.Web.Media
|
||||
{
|
||||
internal class ImageUrlProviderCollectionBuilder : OrderedCollectionBuilderBase<ImageUrlProviderCollectionBuilder, ImageUrlProviderCollection, IImageUrlProvider>
|
||||
{
|
||||
public ImageUrlProviderCollectionBuilder(IServiceContainer container) : base(container)
|
||||
{}
|
||||
|
||||
protected override ImageUrlProviderCollectionBuilder This => this;
|
||||
}
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Media;
|
||||
using Umbraco.Core.ObjectResolution;
|
||||
using Umbraco.Web.Media.ImageUrlProviders;
|
||||
|
||||
namespace Umbraco.Web.Media
|
||||
{
|
||||
internal sealed class ImageUrlProviderResolver : ManyObjectsResolverBase<ImageUrlProviderResolver, IImageUrlProvider>
|
||||
{
|
||||
internal ImageUrlProviderResolver(IServiceProvider serviceProvider, ILogger logger, IEnumerable<Type> value)
|
||||
: base(serviceProvider, logger, value)
|
||||
{
|
||||
}
|
||||
|
||||
public IImageUrlProvider GetProvider(string provider)
|
||||
{
|
||||
return string.IsNullOrEmpty(provider) ?
|
||||
Values.First(v => v.Name.Equals(ImageUrlProvider.DefaultName, StringComparison.InvariantCultureIgnoreCase)) :
|
||||
Values.First(v => v.Name.Equals(provider, StringComparison.InvariantCultureIgnoreCase));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -210,6 +210,8 @@
|
||||
<Compile Include="Macros\XsltMacroEngine.cs" />
|
||||
<Compile Include="HealthCheck\StatusResultType.cs" />
|
||||
<Compile Include="HealthCheck\Checks\DataIntegrity\XmlDataIntegrityHealthCheck.cs" />
|
||||
<Compile Include="Media\ImageUrlProviderCollection.cs" />
|
||||
<Compile Include="Media\ImageUrlProviderCollectionBuilder.cs" />
|
||||
<Compile Include="Media\ThumbnailProviders\ThumbnailProviderCollection.cs" />
|
||||
<Compile Include="Media\ThumbnailProviders\ThumbnailProviderCollectionBuilder.cs" />
|
||||
<Compile Include="Models\ContentEditing\GetAvailableCompositionsFilter.cs" />
|
||||
@@ -825,7 +827,6 @@
|
||||
<Compile Include="Macros\PartialViewMacroEngine.cs" />
|
||||
<Compile Include="Macros\PartialViewMacroPage.cs" />
|
||||
<Compile Include="Media\ImageUrl.cs" />
|
||||
<Compile Include="Media\ImageUrlProviderResolver.cs" />
|
||||
<Compile Include="Media\ImageUrlProviders\ImageUrlProvider.cs" />
|
||||
<Compile Include="Models\PartialViewMacroModel.cs" />
|
||||
<Compile Include="Models\PublishedContentBase.cs" />
|
||||
|
||||
@@ -529,9 +529,8 @@ namespace Umbraco.Web
|
||||
ThumbnailProviderCollectionBuilder.Register(Container)
|
||||
.Add(PluginManager.ResolveThumbnailProviders());
|
||||
|
||||
ImageUrlProviderResolver.Current = new ImageUrlProviderResolver(
|
||||
ServiceProvider, ProfilingLogger.Logger,
|
||||
PluginManager.ResolveImageUrlProviders());
|
||||
ImageUrlProviderCollectionBuilder.Register(Container)
|
||||
.Append(PluginManager.ResolveImageUrlProviders());
|
||||
|
||||
CultureDictionaryFactoryResolver.Current = new CultureDictionaryFactoryResolver(Container);
|
||||
Container.Register<ICultureDictionaryFactory, DefaultCultureDictionaryFactory>();
|
||||
|
||||
Reference in New Issue
Block a user