diff --git a/src/Squidex.Infrastructure.Azure/Assets/AzureBlobAssetStore.cs b/src/Squidex.Infrastructure.Azure/Assets/AzureBlobAssetStore.cs index 969f00ef3..c2075dc51 100644 --- a/src/Squidex.Infrastructure.Azure/Assets/AzureBlobAssetStore.cs +++ b/src/Squidex.Infrastructure.Azure/Assets/AzureBlobAssetStore.cs @@ -48,11 +48,17 @@ namespace Squidex.Infrastructure.Assets } } - public string GenerateSourceUrl(string id, long version, string suffix) + public string GeneratePublicUrl(string id, long version, string suffix) { - var blobName = GetObjectName(id, version, suffix); + if (blobContainer.Properties.PublicAccess != BlobContainerPublicAccessType.Blob) + { + var sourceName = GetObjectName(id, version, suffix); + var sourceBlob = blobContainer.GetBlockBlobReference(sourceName); + + return sourceBlob.Uri.ToString(); + } - return new Uri(blobContainer.StorageUri.PrimaryUri, $"/{containerName}/{blobName}").ToString(); + return null; } public async Task CopyAsync(string sourceFileName, string id, long version, string suffix, CancellationToken ct = default(CancellationToken)) @@ -91,11 +97,12 @@ namespace Squidex.Infrastructure.Assets public async Task DownloadAsync(string id, long version, string suffix, Stream stream, CancellationToken ct = default(CancellationToken)) { - var blob = blobContainer.GetBlockBlobReference(GetObjectName(id, version, suffix)); + var sourceName = GetObjectName(id, version, suffix); + var sourceBlob = blobContainer.GetBlockBlobReference(sourceName); try { - await blob.DownloadToStreamAsync(stream, null, null, null, ct); + await sourceBlob.DownloadToStreamAsync(stream, null, null, null, ct); } catch (StorageException ex) when (ex.RequestInformation.HttpStatusCode == 404) { diff --git a/src/Squidex.Infrastructure.GoogleCloud/Assets/GoogleCloudAssetStore.cs b/src/Squidex.Infrastructure.GoogleCloud/Assets/GoogleCloudAssetStore.cs index 3ef01b8d2..2a584c3c8 100644 --- a/src/Squidex.Infrastructure.GoogleCloud/Assets/GoogleCloudAssetStore.cs +++ b/src/Squidex.Infrastructure.GoogleCloud/Assets/GoogleCloudAssetStore.cs @@ -44,11 +44,9 @@ namespace Squidex.Infrastructure.Assets } } - public string GenerateSourceUrl(string id, long version, string suffix) + public string GeneratePublicUrl(string id, long version, string suffix) { - var objectName = GetObjectName(id, version, suffix); - - return $"https://storage.cloud.google.com/{bucketName}/{objectName}"; + return null; } public async Task CopyAsync(string sourceFileName, string id, long version, string suffix, CancellationToken ct = default(CancellationToken)) diff --git a/src/Squidex.Infrastructure.MongoDb/Assets/MongoGridFsAssetStore.cs b/src/Squidex.Infrastructure.MongoDb/Assets/MongoGridFsAssetStore.cs index 7f4ac0fd5..b78d77108 100644 --- a/src/Squidex.Infrastructure.MongoDb/Assets/MongoGridFsAssetStore.cs +++ b/src/Squidex.Infrastructure.MongoDb/Assets/MongoGridFsAssetStore.cs @@ -39,9 +39,9 @@ namespace Squidex.Infrastructure.Assets } } - public string GenerateSourceUrl(string id, long version, string suffix) + public string GeneratePublicUrl(string id, long version, string suffix) { - return "UNSUPPORTED"; + return null; } public async Task CopyAsync(string sourceFileName, string id, long version, string suffix, CancellationToken ct = default(CancellationToken)) diff --git a/src/Squidex.Infrastructure/Assets/FolderAssetStore.cs b/src/Squidex.Infrastructure/Assets/FolderAssetStore.cs index 435e41433..86362e661 100644 --- a/src/Squidex.Infrastructure/Assets/FolderAssetStore.cs +++ b/src/Squidex.Infrastructure/Assets/FolderAssetStore.cs @@ -52,11 +52,9 @@ namespace Squidex.Infrastructure.Assets } } - public string GenerateSourceUrl(string id, long version, string suffix) + public string GeneratePublicUrl(string id, long version, string suffix) { - var file = GetFile(id, version, suffix); - - return file.FullName; + return null; } public async Task DownloadAsync(string id, long version, string suffix, Stream stream, CancellationToken ct = default(CancellationToken)) diff --git a/src/Squidex.Infrastructure/Assets/IAssetStore.cs b/src/Squidex.Infrastructure/Assets/IAssetStore.cs index 8f954d731..3335c778e 100644 --- a/src/Squidex.Infrastructure/Assets/IAssetStore.cs +++ b/src/Squidex.Infrastructure/Assets/IAssetStore.cs @@ -13,7 +13,7 @@ namespace Squidex.Infrastructure.Assets { public interface IAssetStore { - string GenerateSourceUrl(string id, long version, string suffix); + string GeneratePublicUrl(string id, long version, string suffix); Task CopyAsync(string sourceFileName, string id, long version, string suffix, CancellationToken ct = default(CancellationToken)); diff --git a/src/Squidex/Areas/Api/Controllers/Backups/BackupContentController.cs b/src/Squidex/Areas/Api/Controllers/Backups/BackupContentController.cs index dca947c5c..1fd15760b 100644 --- a/src/Squidex/Areas/Api/Controllers/Backups/BackupContentController.cs +++ b/src/Squidex/Areas/Api/Controllers/Backups/BackupContentController.cs @@ -39,6 +39,7 @@ namespace Squidex.Areas.Api.Controllers.Backups /// [HttpGet] [Route("apps/{app}/backups/{id}")] + [ResponseCache(Duration = 3600 * 24 * 30)] [ProducesResponseType(200)] [ApiCosts(0)] [AllowAnonymous] diff --git a/src/Squidex/Pipeline/UrlGenerator.cs b/src/Squidex/Pipeline/UrlGenerator.cs index cf73bdd3d..f30395986 100644 --- a/src/Squidex/Pipeline/UrlGenerator.cs +++ b/src/Squidex/Pipeline/UrlGenerator.cs @@ -67,7 +67,7 @@ namespace Squidex.Pipeline public string GenerateAssetSourceUrl(IAppEntity app, IAssetEntity asset) { - return assetStore.GenerateSourceUrl(asset.Id.ToString(), asset.FileVersion, null); + return assetStore.GeneratePublicUrl(asset.Id.ToString(), asset.FileVersion, null); } } } diff --git a/tests/Squidex.Infrastructure.Tests/Assets/AzureBlobAssetStoreTests.cs b/tests/Squidex.Infrastructure.Tests/Assets/AzureBlobAssetStoreTests.cs index 0ce5b5820..46ac46cf5 100644 --- a/tests/Squidex.Infrastructure.Tests/Assets/AzureBlobAssetStoreTests.cs +++ b/tests/Squidex.Infrastructure.Tests/Assets/AzureBlobAssetStoreTests.cs @@ -25,9 +25,9 @@ namespace Squidex.Infrastructure.Assets [Fact] public void Should_calculate_source_url() { - var url = Sut.GenerateSourceUrl(AssetId, 1, null); + var url = Sut.GeneratePublicUrl(AssetId, 1, null); - Assert.Equal($"http://127.0.0.1:10000/squidex-test-container/{AssetId}_1", url); + Assert.Equal($"http://127.0.0.1:10000/devstoreaccount1/squidex-test-container/{AssetId}_1", url); } } } diff --git a/tests/Squidex.Infrastructure.Tests/Assets/FolderAssetStoreTests.cs b/tests/Squidex.Infrastructure.Tests/Assets/FolderAssetStoreTests.cs index 5af8355d8..8b89a6420 100644 --- a/tests/Squidex.Infrastructure.Tests/Assets/FolderAssetStoreTests.cs +++ b/tests/Squidex.Infrastructure.Tests/Assets/FolderAssetStoreTests.cs @@ -45,9 +45,9 @@ namespace Squidex.Infrastructure.Assets [Fact] public void Should_calculate_source_url() { - var url = Sut.GenerateSourceUrl(AssetId, 1, null); + var url = Sut.GeneratePublicUrl(AssetId, 1, null); - Assert.Equal(Path.Combine(testFolder, $"{AssetId}_1"), url); + Assert.Null(url); } private static string CreateInvalidPath() diff --git a/tests/Squidex.Infrastructure.Tests/Assets/GoogleCloudAssetStoreTests.cs b/tests/Squidex.Infrastructure.Tests/Assets/GoogleCloudAssetStoreTests.cs index d31420bcf..17c6e2bd1 100644 --- a/tests/Squidex.Infrastructure.Tests/Assets/GoogleCloudAssetStoreTests.cs +++ b/tests/Squidex.Infrastructure.Tests/Assets/GoogleCloudAssetStoreTests.cs @@ -25,9 +25,9 @@ namespace Squidex.Infrastructure.Assets [Fact] public void Should_calculate_source_url() { - var url = Sut.GenerateSourceUrl(AssetId, 1, null); + var url = Sut.GeneratePublicUrl(AssetId, 1, null); - Assert.Equal($"https://storage.cloud.google.com/squidex-test/{AssetId}_1", url); + Assert.Null(url); } } } diff --git a/tests/Squidex.Infrastructure.Tests/Assets/MongoGridFsAssetStoreTests.cs b/tests/Squidex.Infrastructure.Tests/Assets/MongoGridFsAssetStoreTests.cs index 92ffbb668..4fb5a6a66 100644 --- a/tests/Squidex.Infrastructure.Tests/Assets/MongoGridFsAssetStoreTests.cs +++ b/tests/Squidex.Infrastructure.Tests/Assets/MongoGridFsAssetStoreTests.cs @@ -40,7 +40,9 @@ namespace Squidex.Infrastructure.Assets [Fact] public void Should_not_calculate_source_url() { - Assert.Equal("UNSUPPORTED", Sut.GenerateSourceUrl(AssetId, 1, null)); + var url = Sut.GeneratePublicUrl(AssetId, 1, null); + + Assert.Null(url); } } } \ No newline at end of file