kunfei 3 лет назад
Родитель
Сommit
2c35f04d1b
1 измененных файлов с 44 добавлено и 15 удалено
  1. 44 15
      app/src/main/java/io/legado/app/data/entities/BaseSource.kt

+ 44 - 15
app/src/main/java/io/legado/app/data/entities/BaseSource.kt

@@ -10,18 +10,37 @@ import io.legado.app.help.JsExtensions
 import io.legado.app.help.config.AppConfig
 import io.legado.app.help.http.CookieStore
 import io.legado.app.utils.*
+import org.intellij.lang.annotations.Language
 
 /**
  * 可在js里调用,source.xxx()
  */
 @Suppress("unused")
 interface BaseSource : JsExtensions {
+    /**
+     * 并发率
+     */
+    var concurrentRate: String?
+
+    /**
+     * 登录地址
+     */
+    var loginUrl: String?
+
+    /**
+     * 登录UI
+     */
+    var loginUi: String?
 
-    var concurrentRate: String? // 并发率
-    var loginUrl: String?       // 登录地址
-    var loginUi: String?   // 登录UI
-    var header: String?         // 请求头
-    var enabledCookieJar: Boolean?    //启用cookieJar
+    /**
+     * 请求头
+     */
+    var header: String?
+
+    /**
+     * 启用cookieJar
+     */
+    var enabledCookieJar: Boolean?
 
     fun getTag(): String
 
@@ -32,8 +51,7 @@ interface BaseSource : JsExtensions {
     }
 
     fun loginUi(): List<RowUi>? {
-        return GSON.fromJsonArray<RowUi>(loginUi)
-            .onFailure {
+        return GSON.fromJsonArray<RowUi>(loginUi).onFailure {
                 it.printOnDebug()
             }.getOrNull()
     }
@@ -43,16 +61,24 @@ interface BaseSource : JsExtensions {
         return when {
             loginJs == null -> null
             loginJs.startsWith("@js:") -> loginJs.substring(4)
-            loginJs.startsWith("<js>") ->
-                loginJs.substring(4, loginJs.lastIndexOf("<"))
+            loginJs.startsWith("<js>") -> loginJs.substring(4, loginJs.lastIndexOf("<"))
             else -> loginJs
         }
     }
 
     // 调用login函数 实现登录请求
     fun login() {
-        getLoginJs()?.let {
-            evalJS("$it\nif(typeof login=='function'){login.apply(this);}else{throw('Function login not implements!!!')}")
+        val loginJs = getLoginJs()
+        if (!loginJs.isNullOrBlank()) {
+            @Language("js")
+            val js = """$loginJs
+                if(typeof login=='function'){
+                    login.apply(this);
+                } else {
+                    throw('Function login not implements!!!')
+                }
+            """.trimIndent()
+            evalJS(js)
         }
     }
 
@@ -63,10 +89,13 @@ interface BaseSource : JsExtensions {
         header?.let {
             GSON.fromJsonObject<Map<String, String>>(
                 when {
-                    it.startsWith("@js:", true) ->
-                        evalJS(it.substring(4)).toString()
-                    it.startsWith("<js>", true) ->
-                        evalJS(it.substring(4, it.lastIndexOf("<"))).toString()
+                    it.startsWith("@js:", true) -> evalJS(it.substring(4)).toString()
+                    it.startsWith("<js>", true) -> evalJS(
+                        it.substring(
+                            4,
+                            it.lastIndexOf("<")
+                        )
+                    ).toString()
                     else -> it
                 }
             ).getOrNull()?.let { map ->