From 53204a2b4275a56d2d38e25a80bebffdd9bde65f Mon Sep 17 00:00:00 2001 From: rhunk <101876869+rhunk@users.noreply.github.com> Date: Sun, 11 Feb 2024 14:24:53 +0100 Subject: [PATCH] feat(core/chat_action_menu): debug media headers --- .../common/util/snap/RemoteMediaResolver.kt | 6 ++++++ .../snapenhance/core/ui/menu/impl/ChatActionMenu.kt | 12 +++++++++++- 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 index fc4aae65..7c4226c7 100644 --- 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 index e29855ea..12dc9e82 100644 --- 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") )