From ca3f060aa09ebd7193184a30ac432fff77dbc4b0 Mon Sep 17 00:00:00 2001 From: kunfei Date: Tue, 28 Mar 2023 20:32:44 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/updateLog.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/assets/updateLog.md b/app/src/main/assets/updateLog.md index 31b27b9e9..6a5e57721 100644 --- a/app/src/main/assets/updateLog.md +++ b/app/src/main/assets/updateLog.md @@ -11,7 +11,7 @@ * 正文出现缺字漏字、内容缺失、排版错乱等情况,有可能是净化规则或简繁转换出现问题。 * 漫画源看书显示乱码,**阅读与其他软件的源并不通用**,请导入阅读的支持的漫画源! -**2023/03/24** +**2023/03/28** * 更新cronet: 111.0.5563.115 * 更新rhino: 1.7.14-2 @@ -23,6 +23,8 @@ {bookId: 1} https://www.example.com/book/{{result.bookId}} ``` + +* 书架整理搜索支持分类和简介 * 其中一些更新由 Xwite, Horis提供 **2023/03/21** From ba2f35e3e831cad41095f67d04ca82d6d6aa699e Mon Sep 17 00:00:00 2001 From: kunfei Date: Tue, 28 Mar 2023 23:07:08 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/JsTest.kt | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) rename app/src/{test => androidTest}/java/io/legado/app/JsTest.kt (57%) diff --git a/app/src/test/java/io/legado/app/JsTest.kt b/app/src/androidTest/java/io/legado/app/JsTest.kt similarity index 57% rename from app/src/test/java/io/legado/app/JsTest.kt rename to app/src/androidTest/java/io/legado/app/JsTest.kt index c373c2c97..62186f9f7 100644 --- a/app/src/test/java/io/legado/app/JsTest.kt +++ b/app/src/androidTest/java/io/legado/app/JsTest.kt @@ -34,6 +34,7 @@ class JsTest { val jsMap = "$=result;id=$.id;id" val result = SCRIPT_ENGINE.eval(jsMap, bindings)?.toString() Assert.assertEquals("3242532321", result) + @Language("js") val jsMap1 = """result.get("id")""" val result1 = SCRIPT_ENGINE.eval(jsMap1, bindings)?.toString() Assert.assertEquals("3242532321", result1) @@ -95,4 +96,42 @@ class JsTest { Assert.assertEquals(result, ",。!?……;:") } + @Test + fun testPackages() { + @Language("js") + val js = """ + var accessKeyId = '1111'; + var accessKeySecret = '2222'; + var timestamp = '3333'; + var aly = new JavaImporter(Packages.javax.crypto.Mac, Packages.javax.crypto.spec.SecretKeySpec, Packages.javax.xml.bind.DatatypeConverter, Packages.java.net.URLEncoder, Packages.java.lang.String, Packages.android.util.Base64); + with (aly) { + function percentEncode(value) { + return URLEncoder.encode(value, "UTF-8").replace("+", "%20") + .replace("*", "%2A").replace("%7E", "~") + } + + function sign(stringToSign, accessKeySecret) { + var mac = Mac.getInstance('HmacSHA1'); + mac.init(new SecretKeySpec(String(accessKeySecret + '&').getBytes("UTF-8"), "HmacSHA1")); + var signData = mac.doFinal(String(stringToSign).getBytes("UTF-8")); + var signBase64 = Base64.encodeToString(signData, Base64.NO_WRAP); + var signUrlEncode = percentEncode(signBase64); + return signUrlEncode; + } + } + var query = 'AccessKeyId=' + accessKeyId + '&Action=CreateToken&Format=JSON&RegionId=cn-shanghai&SignatureMethod=HMAC-SHA1&SignatureNonce=' + "xxccrr" + '&SignatureVersion=1.0&Timestamp=' + percentEncode(timestamp) + '&Version=2019-02-28'; + var signStr = sign('GET&' + percentEncode('/') + '&' + percentEncode(query), accessKeySecret); + var queryStringWithSign = "Signature=" + signStr + "&" + query; + queryStringWithSign + """.trimIndent() + SCRIPT_ENGINE.eval(js) + @Language("js") + val js1 = """ + var returnData = new Packages.io.legado.app.api.ReturnData() + returnData.getErrorMsg() + """.trimIndent() + val result1 = SCRIPT_ENGINE.eval(js1) + Assert.assertEquals(result1, "未知错误,请联系开发者!") + } + } \ No newline at end of file