mirror of
https://github.com/element-hq/element-android
synced 2024-11-28 05:31:21 +03:00
Update file service
This commit is contained in:
parent
0ad66446e7
commit
016f3faeea
2 changed files with 22 additions and 8 deletions
|
@ -23,8 +23,10 @@ import androidx.core.content.FileProvider
|
|||
import kotlinx.coroutines.CompletableDeferred
|
||||
import kotlinx.coroutines.completeWith
|
||||
import kotlinx.coroutines.withContext
|
||||
import okhttp3.MediaType.Companion.toMediaType
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import okhttp3.RequestBody.Companion.toRequestBody
|
||||
import org.matrix.android.sdk.api.MatrixCoroutineDispatchers
|
||||
import org.matrix.android.sdk.api.failure.Failure
|
||||
import org.matrix.android.sdk.api.session.content.ContentUrlResolver
|
||||
|
@ -118,12 +120,24 @@ internal class DefaultFileService @Inject constructor(
|
|||
val cachedFiles = getFiles(url, fileName, mimeType, elementToDecrypt != null)
|
||||
|
||||
if (!cachedFiles.file.exists()) {
|
||||
val resolvedUrl = contentUrlResolver.resolveFullSize(url) ?: throw IllegalArgumentException("url is null")
|
||||
val resolvedUrl = contentUrlResolver.resolveForDownload(url, elementToDecrypt) ?: throw IllegalArgumentException("url is null")
|
||||
|
||||
val request = Request.Builder()
|
||||
.url(resolvedUrl)
|
||||
.header(DOWNLOAD_PROGRESS_INTERCEPTOR_HEADER, url)
|
||||
.build()
|
||||
val request = when (resolvedUrl) {
|
||||
is ContentUrlResolver.ResolvedMethod.GET -> {
|
||||
Request.Builder()
|
||||
.url(resolvedUrl.url)
|
||||
.header(DOWNLOAD_PROGRESS_INTERCEPTOR_HEADER, url)
|
||||
.build()
|
||||
}
|
||||
|
||||
is ContentUrlResolver.ResolvedMethod.POST -> {
|
||||
Request.Builder()
|
||||
.url(resolvedUrl.url)
|
||||
.header(DOWNLOAD_PROGRESS_INTERCEPTOR_HEADER, url)
|
||||
.post(resolvedUrl.jsonBody.toRequestBody("application/json".toMediaType()))
|
||||
.build()
|
||||
}
|
||||
}
|
||||
|
||||
val response = try {
|
||||
okHttpClient.newCall(request).execute()
|
||||
|
|
|
@ -25,11 +25,11 @@ internal interface ContentScanApi {
|
|||
suspend fun downloadEncrypted(@Body info: DownloadBody): ResponseBody
|
||||
|
||||
@POST(NetworkConstants.URI_API_PREFIX_PATH_MEDIA_PROXY_UNSTABLE + "scan_encrypted")
|
||||
fun scanFile(@Body info: DownloadBody): ScanResponse
|
||||
suspend fun scanFile(@Body info: DownloadBody): ScanResponse
|
||||
|
||||
@GET(NetworkConstants.URI_API_PREFIX_PATH_MEDIA_PROXY_UNSTABLE + "public_key")
|
||||
fun getServerPublicKey(): ServerPublicKeyResponse
|
||||
suspend fun getServerPublicKey(): ServerPublicKeyResponse
|
||||
|
||||
@GET(NetworkConstants.URI_API_PREFIX_PATH_MEDIA_PROXY_UNSTABLE + "scan/{domain}/{mediaId}")
|
||||
fun scanMedia(@Path(value = "domain") domain: String, @Path(value = "mediaId") mediaId: String): ScanResponse
|
||||
suspend fun scanMedia(@Path(value = "domain") domain: String, @Path(value = "mediaId") mediaId: String): ScanResponse
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue