From bf07c5e2d4ce3e636bfd21cdbcdaf1024f8e8ca0 Mon Sep 17 00:00:00 2001 From: Lombiq Date: Fri, 7 Mar 2014 17:56:18 +0100 Subject: [PATCH] #20384: Public host name for Azure storage can be defined with a setting, based on the previous changes (Orchard.Azure) Work Item: 20384 --- src/Orchard.Web/Modules/Orchard.Azure/Constants.cs | 1 + .../Orchard.Azure/Services/FileSystems/AzureFileSystem.cs | 7 +++++-- .../FileSystems/Media/AzureBlobStorageProvider.cs | 8 +++++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Azure/Constants.cs b/src/Orchard.Web/Modules/Orchard.Azure/Constants.cs index 14b4492b3..8dca8ba75 100644 --- a/src/Orchard.Web/Modules/Orchard.Azure/Constants.cs +++ b/src/Orchard.Web/Modules/Orchard.Azure/Constants.cs @@ -8,6 +8,7 @@ public const string MediaStorageFeatureName = "Orchard.Azure.Media"; public const string MediaStorageStorageConnectionStringSettingName = "Orchard.Azure.Media.StorageConnectionString"; public const string MediaStorageContainerName = "media"; // Container names must be lower case. + public const string MediaStoragePublicHostName = "Orchard.Azure.Media.StoragePublicHostName"; public const string OutputCacheFeatureName = "Orchard.Azure.OutputCache"; public const string OutputCacheSettingNamePrefix = "Orchard.Azure.OutputCache."; diff --git a/src/Orchard.Web/Modules/Orchard.Azure/Services/FileSystems/AzureFileSystem.cs b/src/Orchard.Web/Modules/Orchard.Azure/Services/FileSystems/AzureFileSystem.cs index 379f64674..b6d585c28 100644 --- a/src/Orchard.Web/Modules/Orchard.Azure/Services/FileSystems/AzureFileSystem.cs +++ b/src/Orchard.Web/Modules/Orchard.Azure/Services/FileSystems/AzureFileSystem.cs @@ -17,6 +17,7 @@ namespace Orchard.Azure.Services.FileSystems { protected string _root; protected string _absoluteRoot; + protected string _publicHostName; private CloudStorageAccount _storageAccount; private CloudBlobClient _blobClient; @@ -46,12 +47,13 @@ namespace Orchard.Azure.Services.FileSystems { } } - public AzureFileSystem(string storageConnectionString, string containerName, string root, bool isPrivate, IMimeTypeProvider mimeTypeProvider) { + public AzureFileSystem(string storageConnectionString, string containerName, string root, bool isPrivate, IMimeTypeProvider mimeTypeProvider, string publicHostName = null) { _isPrivate = isPrivate; _mimeTypeProvider = mimeTypeProvider; StorageConnectionString = storageConnectionString; ContainerName = containerName; _root = String.IsNullOrEmpty(root) ? "" : root + "/"; + _publicHostName = publicHostName; } private void EnsureInitialized() { @@ -287,7 +289,8 @@ namespace Orchard.Azure.Services.FileSystems { public string GetPublicUrl(string path) { path = ConvertToRelativeUriPath(path); - return Container.GetBlockBlobReference(String.Concat(_root, path)).Uri.ToString(); + var uri = Container.GetBlockBlobReference(String.Concat(_root, path)).Uri; + return string.IsNullOrEmpty(_publicHostName) ? uri.ToString() : uri.ToString().Replace(uri.Host, _publicHostName); } private class AzureBlobFileStorage : IStorageFile { diff --git a/src/Orchard.Web/Modules/Orchard.Azure/Services/FileSystems/Media/AzureBlobStorageProvider.cs b/src/Orchard.Web/Modules/Orchard.Azure/Services/FileSystems/Media/AzureBlobStorageProvider.cs index 448c2ad94..c843c2aee 100644 --- a/src/Orchard.Web/Modules/Orchard.Azure/Services/FileSystems/Media/AzureBlobStorageProvider.cs +++ b/src/Orchard.Web/Modules/Orchard.Azure/Services/FileSystems/Media/AzureBlobStorageProvider.cs @@ -12,11 +12,13 @@ namespace Orchard.Azure.Services.FileSystems.Media { public class AzureBlobStorageProvider : AzureFileSystem, IStorageProvider { public AzureBlobStorageProvider(ShellSettings shellSettings, IMimeTypeProvider mimeTypeProvider, IPlatformConfigurationAccessor pca) - : this(pca.GetSetting(Constants.MediaStorageStorageConnectionStringSettingName, shellSettings.Name, null), Constants.MediaStorageContainerName, shellSettings.Name, mimeTypeProvider) { + : this(pca.GetSetting(Constants.MediaStorageStorageConnectionStringSettingName, shellSettings.Name, null), + Constants.MediaStorageContainerName, shellSettings.Name, mimeTypeProvider, + pca.GetSetting(Constants.MediaStoragePublicHostName, shellSettings.Name, null)) { } - public AzureBlobStorageProvider(string storageConnectionString, string containerName, string rootFolderPath, IMimeTypeProvider mimeTypeProvider) - : base(storageConnectionString, containerName, rootFolderPath, false, mimeTypeProvider) { + public AzureBlobStorageProvider(string storageConnectionString, string containerName, string rootFolderPath, IMimeTypeProvider mimeTypeProvider, string publicHostName) + : base(storageConnectionString, containerName, rootFolderPath, false, mimeTypeProvider, publicHostName) { } public bool TrySaveStream(string path, Stream inputStream) {