using Azure.Storage.Blobs; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Azure.Functions.Worker; using Microsoft.Extensions.Logging; namespace CDP { public class CDPBlobStorage { private readonly ILogger _logger; public CDPBlobStorage(ILogger logger) { _logger = logger; } static internal async Task UploadBlobInternal(FileUploadDto dto, ILogger _logger) { string Connection = Constants.StorageConnString; try { byte[] fileBytes = Convert.FromBase64String(dto.FileContent); var blobSvc = new BlobServiceClient(Connection); var blobClient = blobSvc.GetBlobContainerClient(dto.AppKey.ToLower()); if (!blobClient.Exists()) { await blobClient.CreateAsync(); } var blob = blobClient.GetBlobClient(string.Format("{0}-{1}", dto.FileId, dto.VersionId)); Stream fs = new MemoryStream(fileBytes); var res = await blob.UploadAsync(fs); return new OkObjectResult(res); } catch (Exception ex) { _logger.LogError(ex.ToString()); return new BadRequestObjectResult(ex); } } } public class FileUploadDto { public required string AppKey { get; set; } public required string FileId { get; set; } public required string FileContent { get; set; } public required string VersionId { get; set; } } }