示例#1
0
        public async Task UploadCipherAttachmentFileAsync(AttachmentUploadDataResponse uploadData,
                                                          EncString encryptedFileName, EncByteArray encryptedFileData)
        {
            try
            {
                switch (uploadData.FileUploadType)
                {
                case FileUploadType.Direct:
                    await _bitwardenFileUploadService.Upload(encryptedFileName.EncryptedString, encryptedFileData,
                                                             fd => _apiService.PostAttachmentFileAsync(uploadData.CipherResponse.Id, uploadData.AttachmentId, fd));

                    break;

                case FileUploadType.Azure:
                    Func <Task <string> > renewalCallback = async() =>
                    {
                        var response = await _apiService.RenewAttachmentUploadUrlAsync(uploadData.CipherResponse.Id, uploadData.AttachmentId);

                        return(response.Url);
                    };
                    await _azureFileUploadService.Upload(uploadData.Url, encryptedFileData, renewalCallback);

                    break;

                default:
                    throw new Exception($"Unkown file upload type: {uploadData.FileUploadType}");
                }
            }
            catch
            {
                await _apiService.DeleteCipherAttachmentAsync(uploadData.CipherResponse.Id, uploadData.AttachmentId);

                throw;
            }
        }
示例#2
0
        public async Task UploadSendFileAsync(SendFileUploadDataResponse uploadData, CipherString fileName, byte[] encryptedFileData)
        {
            try
            {
                switch (uploadData.FileUploadType)
                {
                case FileUploadType.Direct:
                    await _bitwardenFileUploadService.Upload(fileName.EncryptedString, encryptedFileData,
                                                             fd => _apiService.PostSendFileAsync(uploadData.SendResponse.Id, uploadData.SendResponse.File.Id, fd));

                    break;

                case FileUploadType.Azure:
                    Func <Task <string> > renewalCallback = async() =>
                    {
                        var response = await _apiService.RenewFileUploadUrlAsync(uploadData.SendResponse.Id, uploadData.SendResponse.File.Id);

                        return(response.Url);
                    };
                    await _azureFileUploadService.Upload(uploadData.Url, encryptedFileData, renewalCallback);

                    break;

                default:
                    throw new Exception("Unknown file upload type");
                }
            }
            catch (Exception e)
            {
                await _apiService.DeleteSendAsync(uploadData.SendResponse.Id);

                throw e;
            }
        }