From 4bdc15c0a779d83b0d61eb0e9485ec9eb278ec8d Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Tue, 4 Jan 2022 15:24:18 +0800 Subject: [PATCH] rewrite func getCookie and add func cacheFile --- app/src/main/assets/updateLog.md | 8 +++++ .../java/io/legado/app/help/JsExtensions.kt | 34 ++++++++++++------- .../io/legado/app/help/http/CookieStore.kt | 6 ++++ 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/app/src/main/assets/updateLog.md b/app/src/main/assets/updateLog.md index cf68c7d88..79c08a526 100644 --- a/app/src/main/assets/updateLog.md +++ b/app/src/main/assets/updateLog.md @@ -11,6 +11,14 @@ * 正文出现缺字漏字、内容缺失、排版错乱等情况,有可能是净化规则或简繁转换出现问题。 * 漫画源看书显示乱码,**阅读与其他软件的源并不通用**,请导入阅读的支持的漫画源! +**2022/01/04** + +* 弃用java.getCookie(tag,key),请使用cookie.getKey(url,key) +* js添加java.cacheFile(url, saveTime),缓存网络链接,返回文件内容,可实现代码共用和减少代码量 +```js +eval(String(java.cacheFile(url))) +``` + **2022/01/03** * 重新安装应用后没有权限的本地书籍会提示选择文件所在文件夹,不需要重新添加 diff --git a/app/src/main/java/io/legado/app/help/JsExtensions.kt b/app/src/main/java/io/legado/app/help/JsExtensions.kt index 90ec06c55..b84ed8f7b 100644 --- a/app/src/main/java/io/legado/app/help/JsExtensions.kt +++ b/app/src/main/java/io/legado/app/help/JsExtensions.kt @@ -8,6 +8,7 @@ import io.legado.app.constant.AppConst import io.legado.app.constant.AppConst.dateFormat import io.legado.app.data.entities.BaseSource import io.legado.app.help.http.* +import io.legado.app.help.CacheManager import io.legado.app.model.Debug import io.legado.app.model.analyzeRule.AnalyzeUrl import io.legado.app.model.analyzeRule.QueryTTF @@ -125,6 +126,26 @@ interface JsExtensions { } } + /** + * 缓存网络文件 + * @param url 网络文件的链接 + * @param saveTime 缓存时间,单位:秒 + * @return 返回缓存后的文件内容 + */ + fun cacheFile(url: String): String? { + return cacheFile(url, 0) + } + + fun cacheFile(url: String, saveTime: Int = 0): String? { + val key = md5Encode16(url) + val _cache = CacheManager.get(key) + val value = ajax(url) ?: "" + if(_cache.isNullOrBlank()) { + CacheManager.put(key, value as Any, saveTime) + } + return _cache + } + /** * 实现16进制字符串转文件 * @param content 需要转成文件的16进制字符串 @@ -174,19 +195,6 @@ interface JsExtensions { .execute() } - /** - *js实现读取cookie - */ - fun getCookie(tag: String, key: String? = null): String { - val cookie = CookieStore.getCookie(tag) - val cookieMap = CookieStore.cookieToMap(cookie) - return if (key != null) { - cookieMap[key] ?: "" - } else { - cookie - } - } - /** * js实现解码,不能删 */ diff --git a/app/src/main/java/io/legado/app/help/http/CookieStore.kt b/app/src/main/java/io/legado/app/help/http/CookieStore.kt index c8d516091..f9fba9520 100644 --- a/app/src/main/java/io/legado/app/help/http/CookieStore.kt +++ b/app/src/main/java/io/legado/app/help/http/CookieStore.kt @@ -34,6 +34,12 @@ object CookieStore : CookieManager { val cookieBean = appDb.cookieDao.get(NetworkUtils.getSubDomain(url)) return cookieBean?.cookie ?: "" } + + fun getKey(url: String, key: String): String { + val cookie = getCookie(url) + val cookieMap = cookieToMap(cookie) + return cookieMap[key] ?: "" + } override fun removeCookie(url: String) { appDb.cookieDao.delete(NetworkUtils.getSubDomain(url))