FieldWorkClient/Services/MinioService.cs

53 lines
1.7 KiB
C#

using Minio.DataModel.Args;
using Minio;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using FileUploader.Models;
namespace Hopetry.Services
{
class MinioService
{
private readonly IMinioClient _minioClient;
private readonly string _bucketName;
public MinioService(IConfiguration config)
{
var minioConfig = config.GetSection("Minio");
_minioClient = new MinioClient()
.WithEndpoint(minioConfig["Endpoint"])
.WithCredentials(minioConfig["AccessKey"], minioConfig["SecretKey"]);
_bucketName = minioConfig["BucketName"];
EnsureBucketExistsAsync().Wait();
}
private async Task EnsureBucketExistsAsync()
{
var existsArgs = new BucketExistsArgs().WithBucket(_bucketName);
if (!await _minioClient.BucketExistsAsync(existsArgs))
{
var makeArgs = new MakeBucketArgs().WithBucket(_bucketName);
await _minioClient.MakeBucketAsync(makeArgs);
}
}
public async Task UploadFileAsync(FileRecord fileRecord)
{
var putArgs = new PutObjectArgs()
.WithBucket(_bucketName)
.WithObject(fileRecord.FileName)
.WithFileName(fileRecord.LocalPath)
.WithContentType("application/octet-stream");
await _minioClient.PutObjectAsync(putArgs);
}
}
}