From 02246ea15aac01306704d0a064e6b82f08943249 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 25 May 2020 22:08:42 +0300 Subject: [PATCH] Create TypedBlobContainerWrapper. --- .../Abp/BlobStoring/AbpBlobStoringModule.cs | 11 ++++- .../BlobContainerManagerExtensions.cs | 30 ++----------- .../{IBlobManager.cs => IBlobContainer.cs} | 6 +++ .../Abp/BlobStoring/IBlobContainerFactory.cs | 20 +++++++++ .../Abp/BlobStoring/IBlobContainerManager.cs | 35 ---------------- .../BlobStoring/TypedBlobContainerWrapper.cs | 42 +++++++++++++++++++ 6 files changed, 81 insertions(+), 63 deletions(-) rename framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/{IBlobManager.cs => IBlobContainer.cs} (96%) create mode 100644 framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/IBlobContainerFactory.cs delete mode 100644 framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/IBlobContainerManager.cs create mode 100644 framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/TypedBlobContainerWrapper.cs diff --git a/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/AbpBlobStoringModule.cs b/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/AbpBlobStoringModule.cs index d828c8434d..51b000f30c 100644 --- a/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/AbpBlobStoringModule.cs +++ b/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/AbpBlobStoringModule.cs @@ -1,9 +1,16 @@ -using Volo.Abp.Modularity; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Modularity; namespace Volo.Abp.BlobStoring { public class AbpBlobStoringModule : AbpModule { - + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddTransient( + typeof(IBlobContainer<>), + typeof(TypedBlobContainerWrapper<>) + ); + } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/BlobContainerManagerExtensions.cs b/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/BlobContainerManagerExtensions.cs index 196d52ab25..e397784344 100644 --- a/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/BlobContainerManagerExtensions.cs +++ b/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/BlobContainerManagerExtensions.cs @@ -1,5 +1,4 @@ using System.Threading; -using System.Threading.Tasks; namespace Volo.Abp.BlobStoring { @@ -8,38 +7,17 @@ namespace Volo.Abp.BlobStoring /// /// Gets a named container. /// - /// The blob container manager + /// The blob container manager /// Cancellation token /// /// The container object. /// - public static Task GetAsync( - this IBlobContainerManager blobContainerManager, + public static IBlobContainer Get( + this IBlobContainerFactory blobContainerFactory, CancellationToken cancellationToken = default ) { - return blobContainerManager.GetAsync( - BlobContainerNameAttribute.GetContainerName(), - cancellationToken - ); - } - - /// - /// - /// - /// The blob container manager - /// Cancellation token - /// Type of the container - /// - /// Returns true if actually deleted the container. - /// Returns false if the container with the given type was not exists. - /// - public static Task DeleteAsync( - this IBlobContainerManager blobContainerManager, - CancellationToken cancellationToken = default - ) - { - return blobContainerManager.DeleteAsync( + return blobContainerFactory.Get( BlobContainerNameAttribute.GetContainerName(), cancellationToken ); diff --git a/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/IBlobManager.cs b/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/IBlobContainer.cs similarity index 96% rename from framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/IBlobManager.cs rename to framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/IBlobContainer.cs index 384b818110..a596565b5f 100644 --- a/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/IBlobManager.cs +++ b/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/IBlobContainer.cs @@ -4,6 +4,12 @@ using System.Threading.Tasks; namespace Volo.Abp.BlobStoring { + public interface IBlobContainer : IBlobContainer + where TContainer: class + { + + } + public interface IBlobContainer { /// diff --git a/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/IBlobContainerFactory.cs b/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/IBlobContainerFactory.cs new file mode 100644 index 0000000000..856268b1bb --- /dev/null +++ b/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/IBlobContainerFactory.cs @@ -0,0 +1,20 @@ +using System.Threading; + +namespace Volo.Abp.BlobStoring +{ + public interface IBlobContainerFactory + { + /// + /// Gets a named container. + /// + /// The name of the container + /// Cancellation token + /// + /// The container object. + /// + IBlobContainer Get( + string name, + CancellationToken cancellationToken = default + ); + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/IBlobContainerManager.cs b/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/IBlobContainerManager.cs deleted file mode 100644 index 234d687d6c..0000000000 --- a/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/IBlobContainerManager.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Threading; -using System.Threading.Tasks; - -namespace Volo.Abp.BlobStoring -{ - public interface IBlobContainerManager - { - /// - /// Gets a named container. - /// - /// The name of the container - /// Cancellation token - /// - /// The container object. - /// - Task GetAsync( - string name, - CancellationToken cancellationToken = default - ); - - /// - /// Deletes a container. - /// - /// The name of the container - /// Cancellation token - /// - /// Returns true if actually deleted the container. - /// Returns false if the container with the given was not exists. - /// - Task DeleteAsync( - string name, - CancellationToken cancellationToken = default - ); - } -} \ No newline at end of file diff --git a/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/TypedBlobContainerWrapper.cs b/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/TypedBlobContainerWrapper.cs new file mode 100644 index 0000000000..a4f36c64a2 --- /dev/null +++ b/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/TypedBlobContainerWrapper.cs @@ -0,0 +1,42 @@ +using System.IO; +using System.Threading; +using System.Threading.Tasks; + +namespace Volo.Abp.BlobStoring +{ + public class TypedBlobContainerWrapper : IBlobContainer + where TContainer: class + { + private readonly IBlobContainer _container; + + public TypedBlobContainerWrapper(IBlobContainerFactory blobContainerFactory) + { + _container = blobContainerFactory.Get(); + } + + public Task SaveAsync(string name, Stream stream, bool overrideExisting = false, CancellationToken cancellationToken = default) + { + return _container.SaveAsync(name, stream, overrideExisting, cancellationToken); + } + + public Task DeleteAsync(string name, CancellationToken cancellationToken = default) + { + return _container.DeleteAsync(name, cancellationToken); + } + + public Task ExistsAsync(string name, CancellationToken cancellationToken = default) + { + return _container.ExistsAsync(name, cancellationToken); + } + + public Task GetAsync(string name, CancellationToken cancellationToken = default) + { + return _container.GetAsync(name, cancellationToken); + } + + public Task GetOrNullAsync(string name, CancellationToken cancellationToken = default) + { + return _container.GetOrNullAsync(name, cancellationToken); + } + } +} \ No newline at end of file