commit 53204a2b4275a56d2d38e25a80bebffdd9bde65f
parent d91641d394fc433060889f602c1077dfed6f8e98
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date: Sun, 11 Feb 2024 14:24:53 +0100
feat(core/chat_action_menu): debug media headers
Diffstat:
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/common/src/main/kotlin/me/rhunk/snapenhance/common/util/snap/RemoteMediaResolver.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/util/snap/RemoteMediaResolver.kt
@@ -2,6 +2,7 @@ package me.rhunk.snapenhance.common.util.snap
import me.rhunk.snapenhance.common.Constants
import me.rhunk.snapenhance.common.logger.AbstractLogger
+import okhttp3.Headers
import okhttp3.OkHttpClient
import okhttp3.Request
import java.io.InputStream
@@ -66,4 +67,9 @@ object RemoteMediaResolver {
)
}
}
+
+ fun getMediaHeaders(protoKey: ByteArray): Headers {
+ val request = newResolveRequest(protoKey)
+ return okHttpClient.newCall(request.newBuilder().method("HEAD", null).build()).execute().headers
+ }
}
diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/ChatActionMenu.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/menu/impl/ChatActionMenu.kt
@@ -2,6 +2,7 @@ package me.rhunk.snapenhance.core.ui.menu.impl
import android.annotation.SuppressLint
import android.content.Context
+import android.text.format.Formatter
import android.view.View
import android.view.ViewGroup
import android.view.ViewGroup.MarginLayoutParams
@@ -19,6 +20,7 @@ import androidx.compose.ui.unit.dp
import me.rhunk.snapenhance.common.data.ContentType
import me.rhunk.snapenhance.common.ui.createComposeView
import me.rhunk.snapenhance.common.util.protobuf.ProtoReader
+import me.rhunk.snapenhance.common.util.snap.RemoteMediaResolver
import me.rhunk.snapenhance.core.features.impl.downloader.MediaDownloader
import me.rhunk.snapenhance.core.features.impl.downloader.decoder.MessageDecoder
import me.rhunk.snapenhance.core.features.impl.experiments.ConvertMessageLocally
@@ -36,6 +38,8 @@ import me.rhunk.snapenhance.core.util.ktx.getDimens
import me.rhunk.snapenhance.core.util.ktx.vibrateLongPress
import java.text.SimpleDateFormat
import java.util.Date
+import kotlin.io.encoding.Base64
+import kotlin.io.encoding.ExperimentalEncodingApi
@SuppressLint("DiscouragedApi")
@@ -93,7 +97,7 @@ class ChatActionMenu : AbstractMenu() {
}
}
- @OptIn(ExperimentalLayoutApi::class)
+ @OptIn(ExperimentalLayoutApi::class, ExperimentalEncodingApi::class)
@SuppressLint("SetTextI18n", "DiscouragedApi", "ClickableViewAccessibility")
override fun inject(parent: ViewGroup, view: View, viewConsumer: (View) -> Unit) {
val viewGroup = parent.parent.parent as? ViewGroup ?: return
@@ -256,6 +260,12 @@ class ChatActionMenu : AbstractMenu() {
append("duration: $it\n")
}
}
+ runCatching {
+ val mediaHeaders = RemoteMediaResolver.getMediaHeaders(Base64.UrlSafe.decode(attachment.mediaUrlKey ?: return@runCatching))
+ append("content-type: ${mediaHeaders["content-type"]}\n")
+ append("content-length: ${Formatter.formatShortFileSize(context.androidContext, mediaHeaders["content-length"]?.toLongOrNull() ?: 0)}\n")
+ append("creation-date: ${mediaHeaders["last-modified"]}\n")
+ }
}.toString()
}.joinToString("\n\n")
)