Create TypedBlobContainerWrapper.

pull/4105/head
Halil İbrahim Kalkan 6 years ago
parent c73cd6962d
commit 02246ea15a

@ -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<>)
);
}
}
}

@ -1,5 +1,4 @@
using System.Threading;
using System.Threading.Tasks;
namespace Volo.Abp.BlobStoring
{
@ -8,38 +7,17 @@ namespace Volo.Abp.BlobStoring
/// <summary>
/// Gets a named container.
/// </summary>
/// <param name="blobContainerManager">The blob container manager</param>
/// <param name="blobContainerFactory">The blob container manager</param>
/// <param name="cancellationToken">Cancellation token</param>
/// <returns>
/// The container object.
/// </returns>
public static Task<IBlobContainer> GetAsync<TContainer>(
this IBlobContainerManager blobContainerManager,
public static IBlobContainer Get<TContainer>(
this IBlobContainerFactory blobContainerFactory,
CancellationToken cancellationToken = default
)
{
return blobContainerManager.GetAsync(
BlobContainerNameAttribute.GetContainerName<TContainer>(),
cancellationToken
);
}
/// <summary>
///
/// </summary>
/// <param name="blobContainerManager">The blob container manager</param>
/// <param name="cancellationToken">Cancellation token</param>
/// <typeparam name="TContainer">Type of the container</typeparam>
/// <returns>
/// Returns true if actually deleted the container.
/// Returns false if the container with the given <typeparamref name="TContainer"/> type was not exists.
/// </returns>
public static Task<bool> DeleteAsync<TContainer>(
this IBlobContainerManager blobContainerManager,
CancellationToken cancellationToken = default
)
{
return blobContainerManager.DeleteAsync(
return blobContainerFactory.Get(
BlobContainerNameAttribute.GetContainerName<TContainer>(),
cancellationToken
);

@ -4,6 +4,12 @@ using System.Threading.Tasks;
namespace Volo.Abp.BlobStoring
{
public interface IBlobContainer<TContainer> : IBlobContainer
where TContainer: class
{
}
public interface IBlobContainer
{
/// <summary>

@ -0,0 +1,20 @@
using System.Threading;
namespace Volo.Abp.BlobStoring
{
public interface IBlobContainerFactory
{
/// <summary>
/// Gets a named container.
/// </summary>
/// <param name="name">The name of the container</param>
/// <param name="cancellationToken">Cancellation token</param>
/// <returns>
/// The container object.
/// </returns>
IBlobContainer Get(
string name,
CancellationToken cancellationToken = default
);
}
}

@ -1,35 +0,0 @@
using System.Threading;
using System.Threading.Tasks;
namespace Volo.Abp.BlobStoring
{
public interface IBlobContainerManager
{
/// <summary>
/// Gets a named container.
/// </summary>
/// <param name="name">The name of the container</param>
/// <param name="cancellationToken">Cancellation token</param>
/// <returns>
/// The container object.
/// </returns>
Task<IBlobContainer> GetAsync(
string name,
CancellationToken cancellationToken = default
);
/// <summary>
/// Deletes a container.
/// </summary>
/// <param name="name">The name of the container</param>
/// <param name="cancellationToken">Cancellation token</param>
/// <returns>
/// Returns true if actually deleted the container.
/// Returns false if the container with the given <paramref name="name"/> was not exists.
/// </returns>
Task<bool> DeleteAsync(
string name,
CancellationToken cancellationToken = default
);
}
}

@ -0,0 +1,42 @@
using System.IO;
using System.Threading;
using System.Threading.Tasks;
namespace Volo.Abp.BlobStoring
{
public class TypedBlobContainerWrapper<TContainer> : IBlobContainer<TContainer>
where TContainer: class
{
private readonly IBlobContainer _container;
public TypedBlobContainerWrapper(IBlobContainerFactory blobContainerFactory)
{
_container = blobContainerFactory.Get<TContainer>();
}
public Task SaveAsync(string name, Stream stream, bool overrideExisting = false, CancellationToken cancellationToken = default)
{
return _container.SaveAsync(name, stream, overrideExisting, cancellationToken);
}
public Task<bool> DeleteAsync(string name, CancellationToken cancellationToken = default)
{
return _container.DeleteAsync(name, cancellationToken);
}
public Task<bool> ExistsAsync(string name, CancellationToken cancellationToken = default)
{
return _container.ExistsAsync(name, cancellationToken);
}
public Task<Stream> GetAsync(string name, CancellationToken cancellationToken = default)
{
return _container.GetAsync(name, cancellationToken);
}
public Task<Stream> GetOrNullAsync(string name, CancellationToken cancellationToken = default)
{
return _container.GetOrNullAsync(name, cancellationToken);
}
}
}
Loading…
Cancel
Save