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