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

  1. using Azure.Storage.Blobs;
  2. using Microsoft.AspNetCore.Http;
  3. using Microsoft.AspNetCore.Mvc;
  4. using Microsoft.Azure.Functions.Worker;
  5. using Microsoft.Extensions.Logging;
  6. namespace CDP
  7. {
  8. public class CDPBlobStorage
  9. {
  10. private readonly ILogger<CDPBlobStorage> _logger;
  11. public CDPBlobStorage(ILogger<CDPBlobStorage> logger)
  12. {
  13. _logger = logger;
  14. }
  15. static internal async Task<IActionResult> UploadBlobInternal(FileUploadDto dto, ILogger _logger)
  16. {
  17. string Connection = Constants.StorageConnString;
  18. try
  19. {
  20. byte[] fileBytes = Convert.FromBase64String(dto.FileContent);
  21. var blobSvc = new BlobServiceClient(Connection);
  22. var blobClient = blobSvc.GetBlobContainerClient(dto.AppKey.ToLower());
  23. if (!blobClient.Exists())
  24. {
  25. await blobClient.CreateAsync();
  26. }
  27. var blob = blobClient.GetBlobClient(string.Format("{0}-{1}", dto.FileId, dto.VersionId));
  28. Stream fs = new MemoryStream(fileBytes);
  29. var res = await blob.UploadAsync(fs);
  30. return new OkObjectResult(res);
  31. }
  32. catch (Exception ex)
  33. {
  34. _logger.LogError(ex.ToString());
  35. return new BadRequestObjectResult(ex);
  36. }
  37. }
  38. }
  39. public class FileUploadDto
  40. {
  41. public required string AppKey { get; set; }
  42. public required string FileId { get; set; }
  43. public required string FileContent { get; set; }
  44. public required string VersionId { get; set; }
  45. }
  46. }