diff --git a/framework/src/Volo.Abp.BlobStoring.Minio/Volo.Abp.BlobStoring.Minio.csproj b/framework/src/Volo.Abp.BlobStoring.Minio/Volo.Abp.BlobStoring.Minio.csproj index cd20d43162..2b1b19e92f 100644 --- a/framework/src/Volo.Abp.BlobStoring.Minio/Volo.Abp.BlobStoring.Minio.csproj +++ b/framework/src/Volo.Abp.BlobStoring.Minio/Volo.Abp.BlobStoring.Minio.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobProvider.cs b/framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobProvider.cs index 8c72e7f023..3b62cd4983 100644 --- a/framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobProvider.cs +++ b/framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobProvider.cs @@ -37,7 +37,11 @@ public class MinioBlobProvider : BlobProviderBase, ITransientDependency await CreateBucketIfNotExists(client, containerName); } - await client.PutObjectAsync(containerName, blobName, args.BlobStream, args.BlobStream.Length); + await client.PutObjectAsync(new PutObjectArgs() + .WithBucket(containerName) + .WithObject(blobName) + .WithStreamData(args.BlobStream) + .WithObjectSize(args.BlobStream.Length)); } public override async Task DeleteAsync(BlobProviderDeleteArgs args) @@ -46,13 +50,14 @@ public class MinioBlobProvider : BlobProviderBase, ITransientDependency var client = GetMinioClient(args); var containerName = GetContainerName(args); - if (await BlobExistsAsync(client, containerName, blobName)) + if (!await BlobExistsAsync(client, containerName, blobName)) { - await client.RemoveObjectAsync(containerName, blobName); - return true; + return false; } - return false; + await client.RemoveObjectAsync(new RemoveObjectArgs().WithBucket(containerName).WithObject(blobName)); + return true; + } public override async Task ExistsAsync(BlobProviderExistsArgs args) @@ -76,7 +81,7 @@ public class MinioBlobProvider : BlobProviderBase, ITransientDependency } var memoryStream = new MemoryStream(); - await client.GetObjectAsync(containerName, blobName, (stream) => + await client.GetObjectAsync(new GetObjectArgs().WithBucket(containerName).WithObject(blobName).WithCallbackStream(stream => { if (stream != null) { @@ -87,7 +92,7 @@ public class MinioBlobProvider : BlobProviderBase, ITransientDependency { memoryStream = null; } - }); + })); return memoryStream; } @@ -110,20 +115,20 @@ public class MinioBlobProvider : BlobProviderBase, ITransientDependency protected virtual async Task CreateBucketIfNotExists(MinioClient client, string containerName) { - if (!await client.BucketExistsAsync(containerName)) + if (!await client.BucketExistsAsync(new BucketExistsArgs().WithBucket(containerName))) { - await client.MakeBucketAsync(containerName); + await client.MakeBucketAsync(new MakeBucketArgs().WithBucket(containerName)); } } protected virtual async Task BlobExistsAsync(MinioClient client, string containerName, string blobName) { // Make sure Blob Container exists. - if (await client.BucketExistsAsync(containerName)) + if (await client.BucketExistsAsync(new BucketExistsArgs().WithBucket(containerName))) { try { - await client.StatObjectAsync(containerName, blobName); + await client.StatObjectAsync(new StatObjectArgs().WithBucket(containerName).WithObject(blobName)); } catch (Exception e) { diff --git a/framework/test/Volo.Abp.BlobStoring.Minio.Tests/Volo/Abp/BlobStoring/Minio/AbpBlobStoringMinioTestModule.cs b/framework/test/Volo.Abp.BlobStoring.Minio.Tests/Volo/Abp/BlobStoring/Minio/AbpBlobStoringMinioTestModule.cs index de60ff6834..cb5111f2d0 100644 --- a/framework/test/Volo.Abp.BlobStoring.Minio.Tests/Volo/Abp/BlobStoring/Minio/AbpBlobStoringMinioTestModule.cs +++ b/framework/test/Volo.Abp.BlobStoring.Minio.Tests/Volo/Abp/BlobStoring/Minio/AbpBlobStoringMinioTestModule.cs @@ -1,10 +1,12 @@ using System; using System.Collections.Generic; using System.Reactive.Linq; +using System.Threading.Tasks; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Minio; using Volo.Abp.Modularity; +using Volo.Abp.Threading; namespace Volo.Abp.BlobStoring.Minio; @@ -59,20 +61,26 @@ public class AbpBlobStoringMinioTestModule : AbpModule }); } - public override async void OnApplicationShutdown(ApplicationShutdownContext context) + public override void OnApplicationShutdown(ApplicationShutdownContext context) { - var minioClient = new MinioClient(_endPoint, _accessKey, _secretKey); - if (await minioClient.BucketExistsAsync(_randomContainerName)) + AsyncHelper.RunSync(() => OnApplicationShutdownAsync(context)); + } + + public async override Task OnApplicationShutdownAsync(ApplicationShutdownContext context) + { + var minioClient = new MinioClient().WithEndpoint(_endPoint).WithCredentials(_accessKey, _secretKey).Build(); + if (await minioClient.BucketExistsAsync(new BucketExistsArgs().WithBucket(_randomContainerName))) { - var objects = await minioClient.ListObjectsAsync(_randomContainerName, null, true).ToList(); + var objects = await minioClient.ListObjectsAsync(new ListObjectsArgs().WithBucket(_randomContainerName) + .WithPrefix(null).WithRecursive(true)).ToList(); foreach (var item in objects) { - await minioClient.RemoveObjectAsync(_randomContainerName, item.Key); + await minioClient.RemoveObjectAsync(new RemoveObjectArgs().WithBucket(_randomContainerName) + .WithObject(item.Key)); } - await minioClient.RemoveBucketAsync(_randomContainerName); + await minioClient.RemoveBucketAsync(new RemoveBucketArgs().WithBucket(_randomContainerName)); } - } } diff --git a/framework/test/Volo.Abp.BlobStoring.Minio.Tests/Volo/Abp/BlobStoring/Minio/MinioBlobContainer_Tests.cs b/framework/test/Volo.Abp.BlobStoring.Minio.Tests/Volo/Abp/BlobStoring/Minio/MinioBlobContainer_Tests.cs index 320a68620e..74857b7fcb 100644 --- a/framework/test/Volo.Abp.BlobStoring.Minio.Tests/Volo/Abp/BlobStoring/Minio/MinioBlobContainer_Tests.cs +++ b/framework/test/Volo.Abp.BlobStoring.Minio.Tests/Volo/Abp/BlobStoring/Minio/MinioBlobContainer_Tests.cs @@ -1,3 +1,15 @@ using Xunit; namespace Volo.Abp.BlobStoring.Minio; + +/* +//Please set the correct connection string in secrets.json and continue the test. +public class MinioBlobContainer_Tests : BlobContainer_Tests +{ + public MinioBlobContainer_Tests() + { + + + } +} +*/ \ No newline at end of file