From 2770979fee1feb8b1ed1963b4097d5df2ccf760a Mon Sep 17 00:00:00 2001 From: tuuz Date: Mon, 18 Mar 2024 02:55:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Eget=5Ffile=E6=96=B9=E6=B3=95?= =?UTF-8?q?=EF=BC=8C=E4=B8=BB=E8=A6=81=E8=A7=A3=E5=86=B3=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E5=8F=8D=E5=90=91websocket=E7=9A=84=E6=97=B6=E5=80=99=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=96=87=E4=BB=B6=E9=BA=BB=E7=83=A6=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E7=9B=AE=E5=89=8D=E4=BB=85=E6=94=AF=E6=8C=81?= =?UTF-8?q?base64=E7=9A=84type=E8=BF=94=E5=9B=9E=EF=BC=8C=E6=9C=AA?= =?UTF-8?q?=E6=9D=A5=E5=B0=86=E6=94=AF=E6=8C=81=E6=9B=B4=E5=A4=9A=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=EF=BC=8C=E6=B5=8B=E8=AF=95=E5=90=8E=E5=B0=86=E5=8F=91?= =?UTF-8?q?=E5=B8=83=E8=87=B3=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../remote/action/handlers/GetFile.kt | 45 +++++++++++++++++++ .../remote/service/data/ResourceData.kt | 6 +++ 2 files changed, 51 insertions(+) create mode 100644 xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetFile.kt 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 new file mode 100644 index 0000000..b8cc36a --- /dev/null +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/action/handlers/GetFile.kt @@ -0,0 +1,45 @@ +package moe.fuqiuluo.shamrock.remote.action.handlers + +import kotlinx.serialization.json.JsonElement +import moe.fuqiuluo.shamrock.remote.action.ActionSession +import moe.fuqiuluo.shamrock.remote.action.IActionHandler +import moe.fuqiuluo.shamrock.remote.service.data.OutResource +import moe.fuqiuluo.shamrock.remote.service.data.OutResourceByBase64 +import moe.fuqiuluo.shamrock.tools.EmptyJsonString +import moe.fuqiuluo.shamrock.utils.AudioUtils +import moe.fuqiuluo.shamrock.utils.FileUtils +import moe.fuqiuluo.symbols.OneBotHandler +import java.util.Base64 + +@OneBotHandler("get_file") internal object GetFile : IActionHandler() { + override suspend fun internalHandle(session: ActionSession): String { + val file = session.getString("file") + .replace(regex = "[{}\\-]".toRegex(), replacement = "") + .replace(" ", "") + .split(".")[0].lowercase() + val fileType = session.getString("file_type") + return invoke(file, fileType, session.echo) + } + + operator fun invoke(file: String, fileType: String, echo: JsonElement = EmptyJsonString): String { + val targetFile = FileUtils.getFileByMd5(file) + return if (targetFile.exists()) { + when (fileType) { + "base64" -> ok( + OutResourceByBase64( + "/res/${targetFile.nameWithoutExtension}", + Base64.getEncoder() + .encodeToString(targetFile.readBytes()), + ), echo + ) + + else -> error("only support base64", echo) + } + + } else { + error("not found record file from md5", echo) + } + } + + override val requiredParams: Array = arrayOf("file", "file_type") +} \ No newline at end of file diff --git a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/data/ResourceData.kt b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/data/ResourceData.kt index 211a1cb..1153295 100644 --- a/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/data/ResourceData.kt +++ b/xposed/src/main/java/moe/fuqiuluo/shamrock/remote/service/data/ResourceData.kt @@ -1,9 +1,15 @@ package moe.fuqiuluo.shamrock.remote.service.data import kotlinx.serialization.Serializable +import java.util.Base64 @Serializable internal data class OutResource( val file: String, val url: String +) + +internal data class OutResourceByBase64( + val file: String, + val base64String: String, ) \ No newline at end of file