Response ValidateRequest(Base64RequestMessage requestMessage) { var response = Response.Create(); if (requestMessage == null) { requestMessage = new Base64RequestMessage(Guid.NewGuid()); } if (string.IsNullOrEmpty(requestMessage.BucketName)) { response.WithBusinessError(nameof(requestMessage.BucketName), "O nome do bucket é obrigatório."); } if (string.IsNullOrEmpty(requestMessage.BucketName)) { response.WithBusinessError(nameof(requestMessage.BucketName), "O nome do bucket é obrigatório."); } if (string.IsNullOrEmpty(requestMessage.FolderName)) { response.WithBusinessError(nameof(requestMessage.FolderName), "O nome do folder é obrigatório."); } if (string.IsNullOrEmpty(requestMessage.FileExtension)) { response.WithBusinessError(nameof(requestMessage.FileExtension), "A extensão do arquivo é obrigatória."); } return(response); }
public async Task <Response <Base64ResponseMessage> > GetBase64Async(Base64RequestMessage requestMessage) { var response = Response <Base64ResponseMessage> .Create(); if (response.WithMessages(ValidateRequest(requestMessage).Messages).HasError) { return(response); } using (var stream = await TransferUtility.OpenStreamAsync(requestMessage.BucketName, $"{requestMessage.FolderName}/{requestMessage.FileName}")) { byte[] bytes; using (var memoryStream = new MemoryStream()) { stream.CopyTo(memoryStream); bytes = memoryStream.ToArray(); } var images = new List <string> { "jpg", "jpeg", "gif", "png", "bmp" }; if (requestMessage.FileExtension.Contains("pdf")) { response.Data.Value.Base64 = $"data:application/pdf;base64,{Convert.ToBase64String(bytes)}"; } else if (images.Contains(requestMessage.FileExtension.Replace(".", ""))) { response.Data.Value.Base64 = $"data:image/{requestMessage.FileExtension.Replace(".", "")};base64,{Convert.ToBase64String(bytes)}"; } else { response.Data.Value.Base64 = $"data:application/octet-stream;base64,{Convert.ToBase64String(bytes)}"; } } response.Data.Value.BucketName = requestMessage.BucketName; response.Data.Value.FolderName = requestMessage.FolderName; response.Data.Value.FileName = requestMessage.FileName; response.Data.Value.FileExtension = requestMessage.FileExtension; response.Data.Value.Link = $"{Options.Value.StorageAws.BaseUrl}/{requestMessage.FolderName}/{requestMessage.FileName}"; return(response); }
public async Task <IActionResult> GetBase64Async([FromQuery] Base64RequestMessage requestMessage) => await TryAsync(() => StorageExternalService.GetBase64Async(requestMessage));