Foxnouns.NET/Foxnouns.Backend/Services/ObjectStorageService.cs

39 lines
1.3 KiB
C#
Raw Normal View History

2024-09-03 16:29:51 +02:00
using Minio;
using Minio.DataModel.Args;
using Minio.Exceptions;
namespace Foxnouns.Backend.Services;
public class ObjectStorageService(ILogger logger, Config config, IMinioClient minioClient)
2024-09-03 16:29:51 +02:00
{
private readonly ILogger _logger = logger.ForContext<ObjectStorageService>();
public async Task RemoveObjectAsync(string path, CancellationToken ct = default)
2024-09-03 16:29:51 +02:00
{
_logger.Debug("Deleting object at path {Path}", path);
2024-09-03 16:29:51 +02:00
try
{
await minioClient.RemoveObjectAsync(
new RemoveObjectArgs().WithBucket(config.Storage.Bucket).WithObject(path),
ct);
2024-09-03 16:29:51 +02:00
}
catch (InvalidObjectNameException)
{
// ignore non-existent objects
2024-09-03 16:29:51 +02:00
}
}
public async Task PutObjectAsync(string path, Stream data, string contentType, CancellationToken ct = default)
2024-09-03 16:29:51 +02:00
{
_logger.Debug("Putting object at path {Path} with length {Length} and content type {ContentType}", path,
data.Length, contentType);
await minioClient.PutObjectAsync(new PutObjectArgs()
.WithBucket(config.Storage.Bucket)
.WithObject(path)
.WithObjectSize(data.Length)
.WithStreamData(data)
.WithContentType(contentType), ct
2024-09-03 16:29:51 +02:00
);
}
}