From 466be1dca5e26bbf442625b33655137fcd6d10e7 Mon Sep 17 00:00:00 2001 From: Valere Date: Tue, 28 May 2019 15:17:06 +0200 Subject: [PATCH] Fix / issue with avatar url --- .../session/content/DefaultContentUrlResolver.kt | 16 ++++++++++++++-- .../internal/session/content/FileUploader.kt | 12 ++++-------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/content/DefaultContentUrlResolver.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/content/DefaultContentUrlResolver.kt index 8845c372..0fad40d0 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/content/DefaultContentUrlResolver.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/content/DefaultContentUrlResolver.kt @@ -21,10 +21,19 @@ import im.vector.matrix.android.api.session.content.ContentUrlResolver private const val MATRIX_CONTENT_URI_SCHEME = "mxc://" -internal const val URI_PREFIX_CONTENT_API = "_matrix/media/v1/" +private const val URI_PREFIX_CONTENT_API = "_matrix/media/v1/" internal class DefaultContentUrlResolver(private val homeServerConnectionConfig: HomeServerConnectionConfig) : ContentUrlResolver { + companion object { + fun getUploadUrl(homeServerConnectionConfig: HomeServerConnectionConfig): String { + val baseUrl = homeServerConnectionConfig.homeServerUri.toString() + val sep = if (baseUrl.endsWith("/")) "" else "/" + + return baseUrl + sep + URI_PREFIX_CONTENT_API + "upload" + } + } + override fun resolveFullSize(contentUrl: String?): String? { if (contentUrl?.isValidMatrixContentUrl() == true) { val baseUrl = homeServerConnectionConfig.homeServerUri.toString() @@ -57,7 +66,10 @@ internal class DefaultContentUrlResolver(private val homeServerConnectionConfig: fragment = serverAndMediaId.substring(fragmentOffset) serverAndMediaId = serverAndMediaId.substring(0, fragmentOffset) } - return baseUrl + prefix + serverAndMediaId + (params ?: "") + fragment + + val sep = if (baseUrl.endsWith("/")) "" else "/" + + return baseUrl + sep + prefix + serverAndMediaId + (params ?: "") + fragment } private fun String.isValidMatrixContentUrl(): Boolean { diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/content/FileUploader.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/content/FileUploader.kt index 1ec18127..e8133070 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/content/FileUploader.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/content/FileUploader.kt @@ -21,19 +21,15 @@ import arrow.core.Try.Companion.raise import im.vector.matrix.android.api.auth.data.SessionParams import im.vector.matrix.android.internal.di.MoshiProvider import im.vector.matrix.android.internal.network.ProgressRequestBody -import okhttp3.HttpUrl -import okhttp3.MediaType -import okhttp3.OkHttpClient -import okhttp3.Request -import okhttp3.RequestBody +import okhttp3.* import java.io.File import java.io.IOException internal class FileUploader(private val okHttpClient: OkHttpClient, - private val sessionParams: SessionParams) { + sessionParams: SessionParams) { - private val uploadUrl = sessionParams.homeServerConnectionConfig.homeServerUri.toString() + URI_PREFIX_CONTENT_API + "upload" + private val uploadUrl = DefaultContentUrlResolver.getUploadUrl(sessionParams.homeServerConnectionConfig) private val moshi = MoshiProvider.providesMoshi() private val responseAdapter = moshi.adapter(ContentUploadResponse::class.java) @@ -82,7 +78,7 @@ internal class FileUploader(private val okHttpClient: OkHttpClient, response.body()?.source()?.let { responseAdapter.fromJson(it) } - ?: throw IOException() + ?: throw IOException() } } }