#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 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 GetAllBytesOrNullAsync(string containerName, string blobName) { var container = GetContainer(containerName); return await container.GetAllBytesOrNullAsync(blobName); } public async Task GetAllBytesAsync(string containerName, string blobName) { var container = GetContainer(containerName); return await container.GetAllBytesAsync(blobName); } public async Task 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 GetAsync(string blobName) { var container = GetDefaultContainer(); return await container.GetAsync(blobName); } public async Task GetAllBytesOrNullAsync(string blobName) { var container = GetDefaultContainer(); return await container.GetAllBytesOrNullAsync(blobName); } public async Task 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 ExistsAsync(string blobName) { var container = GetDefaultContainer(); return await container.ExistsAsync(blobName); } }