|
@@ -10,12 +10,12 @@ import com.bumptech.glide.util.ContentLengthInputStream
|
|
|
import com.script.rhino.runScriptWithContext
|
|
import com.script.rhino.runScriptWithContext
|
|
|
import io.legado.app.data.entities.BaseSource
|
|
import io.legado.app.data.entities.BaseSource
|
|
|
import io.legado.app.exception.NoStackTraceException
|
|
import io.legado.app.exception.NoStackTraceException
|
|
|
-import io.legado.app.help.http.CookieManager.cookieJarHeader
|
|
|
|
|
import io.legado.app.help.http.addHeaders
|
|
import io.legado.app.help.http.addHeaders
|
|
|
import io.legado.app.help.http.okHttpClient
|
|
import io.legado.app.help.http.okHttpClient
|
|
|
import io.legado.app.help.http.okHttpClientManga
|
|
import io.legado.app.help.http.okHttpClientManga
|
|
|
import io.legado.app.help.source.SourceHelp
|
|
import io.legado.app.help.source.SourceHelp
|
|
|
import io.legado.app.model.ReadManga
|
|
import io.legado.app.model.ReadManga
|
|
|
|
|
+import io.legado.app.model.analyzeRule.AnalyzeUrl
|
|
|
import io.legado.app.utils.ImageUtils
|
|
import io.legado.app.utils.ImageUtils
|
|
|
import io.legado.app.utils.isWifiConnect
|
|
import io.legado.app.utils.isWifiConnect
|
|
|
import kotlinx.coroutines.Job
|
|
import kotlinx.coroutines.Job
|
|
@@ -30,7 +30,6 @@ import java.io.InputStream
|
|
|
|
|
|
|
|
|
|
|
|
|
class OkHttpStreamFetcher(
|
|
class OkHttpStreamFetcher(
|
|
|
- private val oldUrl: GlideUrl,
|
|
|
|
|
private val url: GlideUrl,
|
|
private val url: GlideUrl,
|
|
|
private val options: Options,
|
|
private val options: Options,
|
|
|
) :
|
|
) :
|
|
@@ -41,6 +40,7 @@ class OkHttpStreamFetcher(
|
|
|
private var source: BaseSource? = null
|
|
private var source: BaseSource? = null
|
|
|
private val manga = options.get(OkHttpModelLoader.mangaOption) == true
|
|
private val manga = options.get(OkHttpModelLoader.mangaOption) == true
|
|
|
private val coroutineContext = Job()
|
|
private val coroutineContext = Job()
|
|
|
|
|
+ private lateinit var analyzedUrl: GlideUrl
|
|
|
|
|
|
|
|
@Volatile
|
|
@Volatile
|
|
|
private var call: Call? = null
|
|
private var call: Call? = null
|
|
@@ -59,21 +59,19 @@ class OkHttpStreamFetcher(
|
|
|
callback.onLoadFailed(NoStackTraceException("只在wifi加载图片"))
|
|
callback.onLoadFailed(NoStackTraceException("只在wifi加载图片"))
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- val requestBuilder: Request.Builder = Request.Builder().url(url.toStringUrl())
|
|
|
|
|
- val headerMap = HashMap<String, String>()
|
|
|
|
|
|
|
+
|
|
|
options.get(OkHttpModelLoader.sourceOriginOption)?.let { sourceUrl ->
|
|
options.get(OkHttpModelLoader.sourceOriginOption)?.let { sourceUrl ->
|
|
|
source = SourceHelp.getSource(sourceUrl)
|
|
source = SourceHelp.getSource(sourceUrl)
|
|
|
- runScriptWithContext(coroutineContext) {
|
|
|
|
|
- source?.getHeaderMap(true)?.let {
|
|
|
|
|
- headerMap.putAll(it)
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- if (source?.enabledCookieJar == true) {
|
|
|
|
|
- headerMap[cookieJarHeader] = "1"
|
|
|
|
|
- }
|
|
|
|
|
}
|
|
}
|
|
|
- headerMap.putAll(url.headers)
|
|
|
|
|
- requestBuilder.addHeaders(headerMap)
|
|
|
|
|
|
|
+
|
|
|
|
|
+ analyzedUrl = AnalyzeUrl(
|
|
|
|
|
+ url.toString(),
|
|
|
|
|
+ source = source,
|
|
|
|
|
+ coroutineContext = coroutineContext
|
|
|
|
|
+ ).getGlideUrl()
|
|
|
|
|
+
|
|
|
|
|
+ val requestBuilder = Request.Builder().url(analyzedUrl.toStringUrl())
|
|
|
|
|
+ requestBuilder.addHeaders(analyzedUrl.headers)
|
|
|
val request: Request = requestBuilder.build()
|
|
val request: Request = requestBuilder.build()
|
|
|
this.callback = callback
|
|
this.callback = callback
|
|
|
call = if (manga) {
|
|
call = if (manga) {
|
|
@@ -118,7 +116,7 @@ class OkHttpStreamFetcher(
|
|
|
responseBody!!.byteStream()
|
|
responseBody!!.byteStream()
|
|
|
} else if (manga) {
|
|
} else if (manga) {
|
|
|
ImageUtils.decode(
|
|
ImageUtils.decode(
|
|
|
- oldUrl.toString(),
|
|
|
|
|
|
|
+ url.toString(),
|
|
|
responseBody!!.bytes(),
|
|
responseBody!!.bytes(),
|
|
|
isCover = false,
|
|
isCover = false,
|
|
|
source,
|
|
source,
|
|
@@ -126,7 +124,7 @@ class OkHttpStreamFetcher(
|
|
|
)?.inputStream()
|
|
)?.inputStream()
|
|
|
} else {
|
|
} else {
|
|
|
ImageUtils.decode(
|
|
ImageUtils.decode(
|
|
|
- url.toStringUrl(), responseBody!!.byteStream(),
|
|
|
|
|
|
|
+ analyzedUrl.toStringUrl(), responseBody!!.byteStream(),
|
|
|
isCover = true, source
|
|
isCover = true, source
|
|
|
)
|
|
)
|
|
|
}
|
|
}
|
|
@@ -142,7 +140,7 @@ class OkHttpStreamFetcher(
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
|
if (!manga) {
|
|
if (!manga) {
|
|
|
- failUrl.add(url.toStringUrl())
|
|
|
|
|
|
|
+ failUrl.add(analyzedUrl.toStringUrl())
|
|
|
}
|
|
}
|
|
|
callback?.onLoadFailed(HttpException(response.message, response.code))
|
|
callback?.onLoadFailed(HttpException(response.message, response.code))
|
|
|
}
|
|
}
|