|  |  |  | @ -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) | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
	
		
			
				
					|  |  |  | @ -569,21 +573,19 @@ class AnalyzeUrl( | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |  |      *设置cookie 优先级 | 
			
		
	
		
			
				
					|  |  |  |  |      * 设置cookie 优先级 | 
			
		
	
		
			
				
					|  |  |  |  |      * urlOption临时cookie > 数据库cookie = okhttp CookieJar保存在内存中的cookie | 
			
		
	
		
			
				
					|  |  |  |  |      *@param tag 书源url 缺省为传入的url | 
			
		
	
		
			
				
					|  |  |  |  |      */ | 
			
		
	
		
			
				
					|  |  |  |  |     private fun setCookie(tag: String?) { | 
			
		
	
		
			
				
					|  |  |  |  |         val domain = NetworkUtils.getSubDomain(tag ?: url) | 
			
		
	
		
			
				
					|  |  |  |  |         //书源启用保存cookie时 添加内存中的cookie到数据库 | 
			
		
	
		
			
				
					|  |  |  |  |         if (enabledCookieJar) { | 
			
		
	
		
			
				
					|  |  |  |  |             val key = "${domain}_cookieJar" | 
			
		
	
		
			
				
					|  |  |  |  |             CacheManager.getFromMemory(key)?.let { | 
			
		
	
		
			
				
					|  |  |  |  |                 CookieStore.replaceCookie(domain, it) | 
			
		
	
		
			
				
					|  |  |  |  |                 CacheManager.deleteMemory(key) | 
			
		
	
		
			
				
					|  |  |  |  |     private fun setCookie() { | 
			
		
	
		
			
				
					|  |  |  |  |         val cookie = kotlin.run { | 
			
		
	
		
			
				
					|  |  |  |  |             if (enabledCookieJar) { | 
			
		
	
		
			
				
					|  |  |  |  |                 val key = "${domain}_cookieJar" | 
			
		
	
		
			
				
					|  |  |  |  |                 CacheManager.getFromMemory(key)?.let { | 
			
		
	
		
			
				
					|  |  |  |  |                     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)) | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | 
 |