|
|
@@ -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 ->
|