|
|
|
@ -74,6 +74,7 @@ class AnalyzeUrl( |
|
|
|
|
private var useWebView: Boolean = false |
|
|
|
|
private var webJs: String? = null |
|
|
|
|
private val enabledCookieJar = source?.enabledCookieJar ?: false |
|
|
|
|
private val domain: String |
|
|
|
|
|
|
|
|
|
init { |
|
|
|
|
val urlMatcher = paramPattern.matcher(baseUrl) |
|
|
|
@ -86,6 +87,7 @@ class AnalyzeUrl( |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
initUrl() |
|
|
|
|
domain = NetworkUtils.getSubDomain(source?.getKey() ?: url) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -368,7 +370,7 @@ class AnalyzeUrl( |
|
|
|
|
} |
|
|
|
|
val concurrentRecord = fetchStart() |
|
|
|
|
try { |
|
|
|
|
setCookie(source?.getKey()) |
|
|
|
|
setCookie() |
|
|
|
|
val strResponse: StrResponse |
|
|
|
|
if (this.useWebView && useWebView) { |
|
|
|
|
strResponse = when (method) { |
|
|
|
@ -422,6 +424,7 @@ class AnalyzeUrl( |
|
|
|
|
} |
|
|
|
|
return strResponse |
|
|
|
|
} finally { |
|
|
|
|
saveCookie() |
|
|
|
|
fetchEnd(concurrentRecord) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -463,7 +466,7 @@ class AnalyzeUrl( |
|
|
|
|
suspend fun getResponseAwait(): Response { |
|
|
|
|
val concurrentRecord = fetchStart() |
|
|
|
|
try { |
|
|
|
|
setCookie(source?.getKey()) |
|
|
|
|
setCookie() |
|
|
|
|
@Suppress("BlockingMethodInNonBlockingContext") |
|
|
|
|
val response = getProxyClient(proxy).newCallResponse(retry) { |
|
|
|
|
addHeaders(headerMap) |
|
|
|
@ -486,6 +489,7 @@ class AnalyzeUrl( |
|
|
|
|
} |
|
|
|
|
return response |
|
|
|
|
} finally { |
|
|
|
|
saveCookie() |
|
|
|
|
fetchEnd(concurrentRecord) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -571,19 +575,17 @@ class AnalyzeUrl( |
|
|
|
|
/** |
|
|
|
|
* 设置cookie 优先级 |
|
|
|
|
* urlOption临时cookie > 数据库cookie = okhttp CookieJar保存在内存中的cookie |
|
|
|
|
*@param tag 书源url 缺省为传入的url |
|
|
|
|
*/ |
|
|
|
|
private fun setCookie(tag: String?) { |
|
|
|
|
val domain = NetworkUtils.getSubDomain(tag ?: url) |
|
|
|
|
//书源启用保存cookie时 添加内存中的cookie到数据库 |
|
|
|
|
private fun setCookie() { |
|
|
|
|
val cookie = kotlin.run { |
|
|
|
|
if (enabledCookieJar) { |
|
|
|
|
val key = "${domain}_cookieJar" |
|
|
|
|
CacheManager.getFromMemory(key)?.let { |
|
|
|
|
CookieStore.replaceCookie(domain, it) |
|
|
|
|
CacheManager.deleteMemory(key) |
|
|
|
|
return@run it |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
CookieStore.getCookie(domain) |
|
|
|
|
} |
|
|
|
|
val cookie = CookieStore.getCookie(domain) |
|
|
|
|
if (cookie.isNotEmpty()) { |
|
|
|
|
val cookieMap = CookieStore.cookieToMap(cookie) |
|
|
|
|
val customCookieMap = CookieStore.cookieToMap(headerMap["Cookie"] ?: "") |
|
|
|
@ -594,11 +596,26 @@ class AnalyzeUrl( |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 保存cookie |
|
|
|
|
* |
|
|
|
|
*/ |
|
|
|
|
private fun saveCookie() { |
|
|
|
|
//书源启用保存cookie时 添加内存中的cookie到数据库 |
|
|
|
|
if (enabledCookieJar) { |
|
|
|
|
val key = "${domain}_cookieJar" |
|
|
|
|
CacheManager.getFromMemory(key)?.let { |
|
|
|
|
CookieStore.replaceCookie(domain, it) |
|
|
|
|
CacheManager.deleteMemory(key) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
*获取处理过阅读定义的urlOption和cookie的GlideUrl |
|
|
|
|
*/ |
|
|
|
|
fun getGlideUrl(): GlideUrl { |
|
|
|
|
setCookie(source?.getKey()) |
|
|
|
|
setCookie() |
|
|
|
|
return GlideUrl(url, GlideHeaders(headerMap)) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|