mirror of
https://github.com/bitwarden/mobile
synced 2025-12-11 13:53:29 +00:00
Send azure upload (#1334)
* Add direct upload api endpoints * Create azure upload service * Update max file size * Update send file upload test * Move internationalization string to correct document * Allow for one shot blob uploads * Remove unused helper * Use FileUploadService Fallback to legacy method on old server implementations.
This commit is contained in:
51
src/Core/Services/FileUploadService.cs
Normal file
51
src/Core/Services/FileUploadService.cs
Normal file
@@ -0,0 +1,51 @@
|
||||
using System.Threading.Tasks;
|
||||
using Bit.Core.Abstractions;
|
||||
using Bit.Core.Models.Domain;
|
||||
using Bit.Core.Models.Response;
|
||||
using Bit.Core.Enums;
|
||||
using System;
|
||||
|
||||
namespace Bit.Core.Services {
|
||||
public class FileUploadService : IFileUploadService
|
||||
{
|
||||
public FileUploadService(ApiService apiService)
|
||||
{
|
||||
_apiService = apiService;
|
||||
_bitwardenFileUploadService = new BitwardenFileUploadService(apiService);
|
||||
_azureFileUploadService = new AzureFileUploadService();
|
||||
}
|
||||
|
||||
private readonly BitwardenFileUploadService _bitwardenFileUploadService;
|
||||
private readonly AzureFileUploadService _azureFileUploadService;
|
||||
private readonly ApiService _apiService;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user