Core.Blueprint.DAL/Core.Blueprint.DAL.API/Controllers/BlobStorageController.cs
Sergio Matias Urquin 6358f5f199 Add project files.
2025-04-29 18:39:57 -06:00

61 lines
2.0 KiB
C#

using Asp.Versioning;
using Core.Blueprint.DAL.Storage.Contracts;
using Core.Blueprint.Storage;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Core.Blueprint.DAL.API.Controllers
{
[ApiVersion("1.0")]
[Route("api/v{api-version:apiVersion}/[controller]")]
[Produces("application/json")]
[ApiController]
[AllowAnonymous]
public class BlobStorageController(IBlobStorageService storageService) : ControllerBase
{
[HttpPost("UploadBlobFromFileBrowser")]
[Consumes("multipart/form-data")]
public async Task<IActionResult> UploadBlobAsync([FromQuery] string blobName, IFormFile file)
{
if (file == null || file.Length == 0)
return BadRequest("No file uploaded.");
using var stream = file.OpenReadStream();
var result = await storageService.UploadBlobAsync(blobName, stream);
return Ok(result);
}
[HttpPost("UploadBlob")]
public async Task<IActionResult> UploadBlobAsync([FromBody] BlobAddDto newBlob)
{
var result = await storageService.UploadBlobAsync(newBlob);
return Ok(result);
}
[HttpGet("GetBlobList")]
public async Task<IActionResult> GetBlobsListAsync([FromQuery] string? prefix)
{
var result = await storageService.GetBlobsListAsync(prefix).ConfigureAwait(false);
return Ok(result);
}
[HttpGet("DownloadBlob")]
public IActionResult DownloadBlobAsync([FromQuery] string blobName)
{
var result = storageService.DownloadBlobAsync(blobName);
return Ok(result);
}
[HttpDelete("DeleteBlob")]
public async Task<IActionResult> DeleteFileAsync([FromQuery] string blobName)
{
var result = await storageService.DeleteBlobAsync(blobName).ConfigureAwait(false);
if (result is null) return NotFound($"Blob {blobName} doesn't exist");
return Ok(result);
}
}
}