#20384: Public host name for Azure storage can be defined with a setting, based on the previous changes (Orchard.Azure)

Work Item: 20384
This commit is contained in:
Lombiq
2014-03-07 17:56:18 +01:00
committed by Benedek Farkas
parent 87dc3988be
commit bf07c5e2d4
3 changed files with 11 additions and 5 deletions

View File

@@ -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.";

View File

@@ -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 {

View File

@@ -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) {