Temporary repo to track my changes on LTS functions app porting
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.6 KiB

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<CDPBlobStorage> _logger;
public CDPBlobStorage(ILogger<CDPBlobStorage> logger)
{
_logger = logger;
}
static internal async Task<IActionResult> 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; }
}
}