From f3da62fa74817a82d1032f0669cd6ce96fc37de8 Mon Sep 17 00:00:00 2001 From: tuuz Date: Mon, 18 Mar 2024 13:48:48 +0800 Subject: [PATCH 1/3] =?UTF-8?q?GetFile=E7=9A=84type=E6=96=B0=E5=A2=9Egzip?= =?UTF-8?q?=EF=BC=8C=E4=BC=9A=E5=B0=86=E6=95=B0=E6=8D=AE=E6=B5=81=E5=8E=8B?= =?UTF-8?q?=E7=BC=A9=E5=90=8E=E5=86=8Db64=E9=99=8D=E4=BD=8E=E5=B8=A6?= =?UTF-8?q?=E5=AE=BD=E5=8D=A0=E7=94=A8=20-=20=E4=BD=BF=E7=94=A8gzip?= =?UTF-8?q?=E5=8E=8B=E7=BC=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../remote/action/handlers/GetFile.kt | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetFile.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetFile.kt index 844d4f0..7122d26 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetFile.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetFile.kt @@ -7,10 +7,11 @@ import moe.fuqiuluo.shamrock.remote.service.data.OutResourceByBase64 import moe.fuqiuluo.shamrock.tools.EmptyJsonString import moe.fuqiuluo.shamrock.utils.FileUtils import moe.fuqiuluo.symbols.OneBotHandler +import java.io.ByteArrayOutputStream import java.util.Base64 +import java.util.zip.GZIPOutputStream -@OneBotHandler("get_file") -internal object GetFile : IActionHandler() { +@OneBotHandler("get_file") internal object GetFile : IActionHandler() { override suspend fun internalHandle(session: ActionSession): String { val file = session.getString("file") .replace(regex = "[{}\\-]".toRegex(), replacement = "") @@ -33,6 +34,14 @@ internal object GetFile : IActionHandler() { ), echo ) + "gzip" -> ok( + OutResourceByBase64( + "/res/${targetFile.nameWithoutExtension}", + compressAndEncode(targetFile.readBytes()), + targetFile.nameWithoutExtension, + ), echo + ) + else -> error("only support base64", echo) } @@ -41,5 +50,19 @@ internal object GetFile : IActionHandler() { } } + + fun compressAndEncode(input: ByteArray): String { + // 压缩数据 + val outputStream = ByteArrayOutputStream() + val gzip = GZIPOutputStream(outputStream) + gzip.write(input) + gzip.close() + val compressedBytes = outputStream.toByteArray() + + // 编码为 Base64 字符串 + return Base64.getEncoder() + .encodeToString(compressedBytes) + } + override val requiredParams: Array = arrayOf("file") } From 6936262d62ff7852de978669a5b3dca8fb1e0704 Mon Sep 17 00:00:00 2001 From: tuuz Date: Mon, 18 Mar 2024 15:24:24 +0800 Subject: [PATCH 2/3] =?UTF-8?q?GetFile=E7=9A=84type=E6=96=B0=E5=A2=9Egzip?= =?UTF-8?q?=EF=BC=8C=E4=BC=9A=E5=B0=86=E6=95=B0=E6=8D=AE=E6=B5=81=E5=8E=8B?= =?UTF-8?q?=E7=BC=A9=E5=90=8E=E5=86=8Db64=E9=99=8D=E4=BD=8E=E5=B8=A6?= =?UTF-8?q?=E5=AE=BD=E5=8D=A0=E7=94=A8=20-=20=E4=BD=BF=E7=94=A8gzip?= =?UTF-8?q?=E5=8E=8B=E7=BC=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../moe/fuqiuluo/shamrock/remote/action/handlers/GetFile.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetFile.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetFile.kt index 7122d26..ad70d78 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetFile.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetFile.kt @@ -42,7 +42,7 @@ import java.util.zip.GZIPOutputStream ), echo ) - else -> error("only support base64", echo) + else -> error("filt_type error", echo) } } else { From 824f280b3a54db6fd87f58b02a0927b23251bc05 Mon Sep 17 00:00:00 2001 From: tuuz Date: Mon, 18 Mar 2024 15:40:14 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9error=20=E6=8F=90?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../moe/fuqiuluo/shamrock/remote/action/handlers/GetFile.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetFile.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetFile.kt index ad70d78..7b3a9e4 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetFile.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetFile.kt @@ -42,7 +42,7 @@ import java.util.zip.GZIPOutputStream ), echo ) - else -> error("filt_type error", echo) + else -> error("file_type error", echo) } } else {