mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-23 04:28:35 +00:00
Include backup size when fetching archive upload form.
This commit is contained in:
@@ -1333,10 +1333,10 @@ object BackupRepository {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getResumableMessagesBackupUploadSpec(): NetworkResult<ResumableMessagesBackupUploadSpec> {
|
fun getResumableMessagesBackupUploadSpec(backupFileSize: Long): NetworkResult<ResumableMessagesBackupUploadSpec> {
|
||||||
return initBackupAndFetchAuth()
|
return initBackupAndFetchAuth()
|
||||||
.then { credential ->
|
.then { credential ->
|
||||||
SignalNetwork.archive.getMessageBackupUploadForm(SignalStore.account.requireAci(), credential.messageBackupAccess)
|
SignalNetwork.archive.getMessageBackupUploadForm(SignalStore.account.requireAci(), credential.messageBackupAccess, backupFileSize)
|
||||||
.also { Log.i(TAG, "UploadFormResult: ${it::class.simpleName}") }
|
.also { Log.i(TAG, "UploadFormResult: ${it::class.simpleName}") }
|
||||||
}
|
}
|
||||||
.then { form ->
|
.then { form ->
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ class BackupMessagesJob private constructor(
|
|||||||
this.syncTime = currentTime
|
this.syncTime = currentTime
|
||||||
this.dataFile = tempBackupFile.path
|
this.dataFile = tempBackupFile.path
|
||||||
|
|
||||||
val backupSpec: ResumableMessagesBackupUploadSpec = resumableMessagesBackupUploadSpec ?: when (val result = BackupRepository.getResumableMessagesBackupUploadSpec()) {
|
val backupSpec: ResumableMessagesBackupUploadSpec = resumableMessagesBackupUploadSpec ?: when (val result = BackupRepository.getResumableMessagesBackupUploadSpec(tempBackupFile.length())) {
|
||||||
is NetworkResult.Success -> {
|
is NetworkResult.Success -> {
|
||||||
Log.i(TAG, "Successfully generated a new upload spec.")
|
Log.i(TAG, "Successfully generated a new upload spec.")
|
||||||
|
|
||||||
@@ -173,7 +173,15 @@ class BackupMessagesJob private constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
is NetworkResult.StatusCodeError -> {
|
is NetworkResult.StatusCodeError -> {
|
||||||
|
when (result.code) {
|
||||||
|
413 -> {
|
||||||
|
Log.i(TAG, "Backup file is too large! Size: ${tempBackupFile.length()} bytes", result.getCause())
|
||||||
|
// TODO [backup] Need to show the user an error
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
Log.i(TAG, "Status code failure", result.getCause())
|
Log.i(TAG, "Status code failure", result.getCause())
|
||||||
|
}
|
||||||
|
}
|
||||||
return Result.retry(defaultBackoff())
|
return Result.retry(defaultBackoff())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -143,13 +143,14 @@ class ArchiveApi(
|
|||||||
* - 200: Success
|
* - 200: Success
|
||||||
* - 400: Bad args, or made on an authenticated channel
|
* - 400: Bad args, or made on an authenticated channel
|
||||||
* - 403: Insufficient permissions
|
* - 403: Insufficient permissions
|
||||||
|
* - 413: The backup is too large
|
||||||
* - 429: Rate-limited
|
* - 429: Rate-limited
|
||||||
*/
|
*/
|
||||||
fun getMessageBackupUploadForm(aci: ACI, archiveServiceAccess: ArchiveServiceAccess<MessageBackupKey>): NetworkResult<AttachmentUploadForm> {
|
fun getMessageBackupUploadForm(aci: ACI, archiveServiceAccess: ArchiveServiceAccess<MessageBackupKey>, backupFileSize: Long): NetworkResult<AttachmentUploadForm> {
|
||||||
return getCredentialPresentation(aci, archiveServiceAccess)
|
return getCredentialPresentation(aci, archiveServiceAccess)
|
||||||
.map { it.toArchiveCredentialPresentation().toHeaders() }
|
.map { it.toArchiveCredentialPresentation().toHeaders() }
|
||||||
.then { headers ->
|
.then { headers ->
|
||||||
val request = WebSocketRequestMessage.get("/v1/archives/upload/form", headers)
|
val request = WebSocketRequestMessage.get("/v1/archives/upload/form?uploadLength=$backupFileSize", headers)
|
||||||
NetworkResult.fromWebSocketRequest(unauthWebSocket, request, AttachmentUploadForm::class)
|
NetworkResult.fromWebSocketRequest(unauthWebSocket, request, AttachmentUploadForm::class)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user