#4253: Made Azure Blob Storage container names configurable.

Fixes #4253
This commit is contained in:
Daniel Stolt
2015-07-17 13:23:21 +01:00
parent e562f6adbd
commit a9eb00c8fa
3 changed files with 21 additions and 12 deletions

View File

@@ -2,13 +2,15 @@
public class Constants { public class Constants {
public const string ShellSettingsStorageConnectionStringSettingName = "Orchard.Azure.Settings.StorageConnectionString"; public const string ShellSettingsStorageConnectionStringSettingName = "Orchard.Azure.Settings.StorageConnectionString";
public const string ShellSettingsContainerName = "sites"; // Container names must be lower case. public const string ShellSettingsContainerNameSettingName = "Orchard.Azure.Settings.ContainerName";
public const string ShellSettingsDefaultContainerName = "sites"; // Container names must be lower case.
public const string ShellSettingsFileName = "Settings.txt"; public const string ShellSettingsFileName = "Settings.txt";
public const string MediaStorageFeatureName = "Orchard.Azure.Media"; public const string MediaStorageFeatureName = "Orchard.Azure.Media";
public const string MediaStorageStorageConnectionStringSettingName = "Orchard.Azure.Media.StorageConnectionString"; public const string MediaStorageStorageConnectionStringSettingName = "Orchard.Azure.Media.StorageConnectionString";
public const string MediaStorageRootFolderPathSettingName = "Orchard.Azure.Media.RootFolderPath"; public const string MediaStorageRootFolderPathSettingName = "Orchard.Azure.Media.RootFolderPath";
public const string MediaStorageContainerName = "media"; // Container names must be lower case. public const string MediaStorageContainerNameSettingName = "Orchard.Azure.Media.ContainerName";
public const string MediaStorageDefaultContainerName = "media"; // Container names must be lower case.
public const string MediaStoragePublicHostName = "Orchard.Azure.Media.StoragePublicHostName"; public const string MediaStoragePublicHostName = "Orchard.Azure.Media.StoragePublicHostName";
public const string OutputCacheFeatureName = "Orchard.Azure.OutputCache"; public const string OutputCacheFeatureName = "Orchard.Azure.OutputCache";

View File

@@ -20,7 +20,11 @@ namespace Orchard.Azure.Services.Environment.Configuration {
private readonly IShellSettingsManagerEventHandler _events; private readonly IShellSettingsManagerEventHandler _events;
public AzureBlobShellSettingsManager(IMimeTypeProvider mimeTypeProvider, IShellSettingsManagerEventHandler events) { public AzureBlobShellSettingsManager(IMimeTypeProvider mimeTypeProvider, IShellSettingsManagerEventHandler events) {
_fileSystem = new AzureFileSystem(CloudConfigurationManager.GetSetting(Constants.ShellSettingsStorageConnectionStringSettingName), Constants.ShellSettingsContainerName, String.Empty, true, mimeTypeProvider); var connectionString = CloudConfigurationManager.GetSetting(Constants.ShellSettingsStorageConnectionStringSettingName);
var containerName = CloudConfigurationManager.GetSetting(Constants.ShellSettingsContainerNameSettingName);
if (String.IsNullOrEmpty(containerName))
containerName = Constants.ShellSettingsDefaultContainerName;
_fileSystem = new AzureFileSystem(connectionString, containerName, String.Empty, true, mimeTypeProvider);
_events = events; _events = events;
Logger = NullLogger.Instance; Logger = NullLogger.Instance;
} }

View File

@@ -11,12 +11,15 @@ namespace Orchard.Azure.Services.FileSystems.Media {
[OrchardSuppressDependency("Orchard.FileSystems.Media.FileSystemStorageProvider")] [OrchardSuppressDependency("Orchard.FileSystems.Media.FileSystemStorageProvider")]
public class AzureBlobStorageProvider : AzureFileSystem, IStorageProvider { public class AzureBlobStorageProvider : AzureFileSystem, IStorageProvider {
public AzureBlobStorageProvider(ShellSettings shellSettings, IMimeTypeProvider mimeTypeProvider, IPlatformConfigurationAccessor pca) public AzureBlobStorageProvider(
: this(pca.GetSetting(Constants.MediaStorageStorageConnectionStringSettingName, shellSettings.Name, null), ShellSettings shellSettings,
Constants.MediaStorageContainerName, IMimeTypeProvider mimeTypeProvider,
pca.GetSetting(Constants.MediaStorageRootFolderPathSettingName, shellSettings.Name, null) ?? shellSettings.Name, IPlatformConfigurationAccessor platformConfigurationAccessor)
: this(platformConfigurationAccessor.GetSetting(Constants.MediaStorageStorageConnectionStringSettingName, shellSettings.Name, null),
platformConfigurationAccessor.GetSetting(Constants.MediaStorageContainerNameSettingName, shellSettings.Name, null) ?? Constants.MediaStorageDefaultContainerName,
platformConfigurationAccessor.GetSetting(Constants.MediaStorageRootFolderPathSettingName, shellSettings.Name, null) ?? shellSettings.Name,
mimeTypeProvider, mimeTypeProvider,
pca.GetSetting(Constants.MediaStoragePublicHostName, shellSettings.Name, null)) platformConfigurationAccessor.GetSetting(Constants.MediaStoragePublicHostName, shellSettings.Name, null))
{ {
} }
@@ -26,10 +29,10 @@ namespace Orchard.Azure.Services.FileSystems.Media {
public bool TrySaveStream(string path, Stream inputStream) { public bool TrySaveStream(string path, Stream inputStream) {
try { try {
if (FileExists(path)) { if (FileExists(path)) {
return false; return false;
} }
SaveStream(path, inputStream); SaveStream(path, inputStream);
} }
catch { catch {