erp-platform/api/src/Kurs.Platform.Domain/BlobStoring/BlobManager.cs
2025-10-26 11:59:02 +03:00

116 lines
3.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#nullable enable
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Volo.Abp.BlobStoring;
using Volo.Abp.Domain.Services;
namespace Kurs.Platform.BlobStoring;
[Authorize]
public class BlobManager : DomainService
{
private readonly IBlobContainerFactory _blobContainerFactory;
public BlobManager(IBlobContainerFactory blobContainerFactory)
{
_blobContainerFactory = blobContainerFactory;
}
private IBlobContainer GetContainer(string containerName)
{
// containerName bir sınıfa bağlı değil, sadece string
return _blobContainerFactory.Create(containerName);
}
public async Task SaveAsync(string containerName, string blobName, Stream bytes, bool overrideExisting = true)
{
var container = GetContainer(containerName);
await container.SaveAsync(blobName, bytes, overrideExisting);
}
public async Task<Stream> GetAsync(string containerName, string blobName)
{
var container = GetContainer(containerName);
return await container.GetAsync(blobName);
}
public async Task DeleteAsync(string containerName, string blobName)
{
var container = GetContainer(containerName);
await container.DeleteAsync(blobName);
}
public async Task SaveAsync(string containerName, string blobName, byte[] bytes, bool overrideExisting = true)
{
var container = GetContainer(containerName);
await container.SaveAsync(blobName, bytes, overrideExisting);
}
public async Task<byte[]?> GetAllBytesOrNullAsync(string containerName, string blobName)
{
var container = GetContainer(containerName);
return await container.GetAllBytesOrNullAsync(blobName);
}
public async Task<byte[]> GetAllBytesAsync(string containerName, string blobName)
{
var container = GetContainer(containerName);
return await container.GetAllBytesAsync(blobName);
}
public async Task<bool> ExistsAsync(string containerName, string blobName)
{
var container = GetContainer(containerName);
return await container.ExistsAsync(blobName);
}
// Default container methods (for FileManagement and other general purposes)
private IBlobContainer GetDefaultContainer()
{
return _blobContainerFactory.Create("default");
}
public async Task SaveAsync(string blobName, Stream bytes, bool overrideExisting = true)
{
var container = GetDefaultContainer();
await container.SaveAsync(blobName, bytes, overrideExisting);
}
public async Task SaveAsync(string blobName, byte[] bytes, bool overrideExisting = true)
{
var container = GetDefaultContainer();
await container.SaveAsync(blobName, bytes, overrideExisting);
}
public async Task<Stream> GetAsync(string blobName)
{
var container = GetDefaultContainer();
return await container.GetAsync(blobName);
}
public async Task<byte[]?> GetAllBytesOrNullAsync(string blobName)
{
var container = GetDefaultContainer();
return await container.GetAllBytesOrNullAsync(blobName);
}
public async Task<byte[]> GetAllBytesAsync(string blobName)
{
var container = GetDefaultContainer();
return await container.GetAllBytesAsync(blobName);
}
public async Task DeleteAsync(string blobName)
{
var container = GetDefaultContainer();
await container.DeleteAsync(blobName);
}
public async Task<bool> ExistsAsync(string blobName)
{
var container = GetDefaultContainer();
return await container.ExistsAsync(blobName);
}
}