Просмотр исходного кода

rewrite func getCookie and add func cacheFile

Xwite 4 лет назад
Родитель
Сommit
4bdc15c0a7

+ 8 - 0
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**
 
 * 重新安装应用后没有权限的本地书籍会提示选择文件所在文件夹,不需要重新添加

+ 21 - 13
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实现解码,不能删
      */

+ 6 - 0
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))