From 511d2e747145aae02ab3d049ddaf12c8fc0324ac Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Thu, 14 Apr 2022 07:23:06 +0800 Subject: [PATCH] =?UTF-8?q?feat:glideUrl=E6=94=AF=E6=8C=81=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0options?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/help/glide/ImageLoader.kt | 18 +++---------- .../app/help/glide/OkHttpModelLoader.kt | 5 +++- .../app/model/analyzeRule/AnalyzeUrl.kt | 26 ++++++++++++------- 3 files changed, 24 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/io/legado/app/help/glide/ImageLoader.kt b/app/src/main/java/io/legado/app/help/glide/ImageLoader.kt index 625086c0a..4b0616d95 100644 --- a/app/src/main/java/io/legado/app/help/glide/ImageLoader.kt +++ b/app/src/main/java/io/legado/app/help/glide/ImageLoader.kt @@ -7,7 +7,6 @@ import android.net.Uri import androidx.annotation.DrawableRes import com.bumptech.glide.RequestBuilder import io.legado.app.constant.AppPattern.dataUriRegex -import io.legado.app.model.analyzeRule.AnalyzeUrl import io.legado.app.utils.isAbsUrl import io.legado.app.utils.isContentScheme import java.io.File @@ -21,19 +20,11 @@ object ImageLoader { fun load(context: Context, path: String?): RequestBuilder { return when { path.isNullOrEmpty() -> GlideApp.with(context).load(path) - dataUriRegex.find(path) != null -> { - //glide内部已经实现dataUri解析 - GlideApp.with(context).load(path) - } + dataUriRegex.find(path) != null -> GlideApp.with(context).load(path) path.isAbsUrl() -> GlideApp.with(context).load(path) path.isContentScheme() -> GlideApp.with(context).load(Uri.parse(path)) else -> kotlin.runCatching { - val file = File(path) - if (file.exists()) { - GlideApp.with(context).load(file) - } else { - GlideApp.with(context).load(path) - } + GlideApp.with(context).load(File(path)) }.getOrElse { GlideApp.with(context).load(path) } @@ -43,8 +34,7 @@ object ImageLoader { fun loadBitmap(context: Context, path: String?): RequestBuilder { return when { path.isNullOrEmpty() -> GlideApp.with(context).asBitmap().load(path) - path.isAbsUrl() -> GlideApp.with(context).asBitmap() - .load(AnalyzeUrl(path).getGlideUrl()) + path.isAbsUrl() -> GlideApp.with(context).asBitmap().load(path) path.isContentScheme() -> GlideApp.with(context).asBitmap().load(Uri.parse(path)) else -> kotlin.runCatching { GlideApp.with(context).asBitmap().load(File(path)) @@ -57,7 +47,7 @@ object ImageLoader { fun loadFile(context: Context, path: String?): RequestBuilder { return when { path.isNullOrEmpty() -> GlideApp.with(context).asFile().load(path) - path.isAbsUrl() -> GlideApp.with(context).asFile().load(AnalyzeUrl(path).getGlideUrl()) + path.isAbsUrl() -> GlideApp.with(context).asFile().load(path) path.isContentScheme() -> GlideApp.with(context).asFile().load(Uri.parse(path)) else -> kotlin.runCatching { GlideApp.with(context).asFile().load(File(path)) diff --git a/app/src/main/java/io/legado/app/help/glide/OkHttpModelLoader.kt b/app/src/main/java/io/legado/app/help/glide/OkHttpModelLoader.kt index b8cd1ba9a..df822a618 100644 --- a/app/src/main/java/io/legado/app/help/glide/OkHttpModelLoader.kt +++ b/app/src/main/java/io/legado/app/help/glide/OkHttpModelLoader.kt @@ -4,6 +4,8 @@ import com.bumptech.glide.load.Option import com.bumptech.glide.load.Options import com.bumptech.glide.load.model.GlideUrl import com.bumptech.glide.load.model.ModelLoader +import io.legado.app.model.analyzeRule.AnalyzeUrl + import java.io.InputStream object OkHttpModelLoader : ModelLoader { @@ -17,7 +19,8 @@ object OkHttpModelLoader : ModelLoader { height: Int, options: Options ): ModelLoader.LoadData { - return ModelLoader.LoadData(model, OkHttpStreamFetcher(model, options)) + val modelWithHeader = AnalyzeUrl(model.toString()).getGlideUrl() + return ModelLoader.LoadData(modelWithHeader, OkHttpStreamFetcher(modelWithHeader, options)) } override fun handles(model: GlideUrl): Boolean { diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt index cc0d64a39..dbf8f9b98 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt +++ b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt @@ -518,22 +518,28 @@ class AnalyzeUrl( } } + /** + *设置cookie urlOption的优先级大于书源保存的cookie + *@param tag 书源url 缺省为传入的url + */ private fun setCookie(tag: String?) { - if (tag != null) { - val cookie = CookieStore.getCookie(tag) - if (cookie.isNotEmpty()) { - val cookieMap = CookieStore.cookieToMap(cookie) - val customCookieMap = CookieStore.cookieToMap(headerMap["Cookie"] ?: "") - cookieMap.putAll(customCookieMap) - val newCookie = CookieStore.mapToCookie(cookieMap) - newCookie?.let { - headerMap.put("Cookie", it) - } + val cookie = CookieStore.getCookie(tag ?: url) + if (cookie.isNotEmpty()) { + val cookieMap = CookieStore.cookieToMap(cookie) + val customCookieMap = CookieStore.cookieToMap(headerMap["Cookie"] ?: "") + cookieMap.putAll(customCookieMap) + val newCookie = CookieStore.mapToCookie(cookieMap) + newCookie?.let { + headerMap.put("Cookie", it) } } } + /** + *获取处理过阅读定义的urlOption和cookie的GlideUrl + */ fun getGlideUrl(): GlideUrl { + setCookie(source?.getKey()) val headers = LazyHeaders.Builder() headerMap.forEach { (key, value) -> headers.addHeader(key, value)