From 4bf9a1d84a725d94330b45eea16a3240b90a4e5d Mon Sep 17 00:00:00 2001 From: JingMatrix Date: Thu, 25 Jul 2024 17:13:11 +0200 Subject: [PATCH] Support data URL in @require Close #179 as completed. --- .../main/java/org/matrix/chromext/script/Parser.kt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/src/main/java/org/matrix/chromext/script/Parser.kt b/app/src/main/java/org/matrix/chromext/script/Parser.kt index 8893514..4b4fa1b 100644 --- a/app/src/main/java/org/matrix/chromext/script/Parser.kt +++ b/app/src/main/java/org/matrix/chromext/script/Parser.kt @@ -1,5 +1,7 @@ package org.matrix.chromext.script +import android.net.Uri +import android.util.Base64 import java.net.HttpURLConnection import java.net.URL import kotlin.text.Regex @@ -80,6 +82,16 @@ fun parseScript(input: String, storage: String? = null): Script? { } private fun downloadLib(libUrl: String): String { + if (libUrl.startsWith("data:")) { + val chunks = libUrl.split(",").toMutableList() + val type = chunks.removeFirst() + val data = Uri.decode(chunks.joinToString("")) + if (type.endsWith("base64")) { + return Base64.decode(data, Base64.DEFAULT).toString() + } else { + return data + } + } val url = URL(libUrl) val connection = url.openConnection() as HttpURLConnection return connection.inputStream.bufferedReader().use { it.readText() }