Use PageHandler for page requests

This commit is contained in:
Jobobby04 2021-06-05 15:24:02 -04:00
parent 143dfc6ad2
commit 38f2a93c0f
2 changed files with 27 additions and 26 deletions

View File

@ -1,6 +1,7 @@
package eu.kanade.tachiyomi.source.online.all package eu.kanade.tachiyomi.source.online.all
import android.content.Context import android.content.Context
import android.content.SharedPreferences
import eu.kanade.tachiyomi.data.database.models.Track import eu.kanade.tachiyomi.data.database.models.Track
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.TrackManager
@ -26,6 +27,7 @@ import exh.md.handlers.ApiMangaParser
import exh.md.handlers.FollowsHandler import exh.md.handlers.FollowsHandler
import exh.md.handlers.MangaHandler import exh.md.handlers.MangaHandler
import exh.md.handlers.MangaPlusHandler import exh.md.handlers.MangaPlusHandler
import exh.md.handlers.PageHandler
import exh.md.handlers.SimilarHandler import exh.md.handlers.SimilarHandler
import exh.md.network.MangaDexLoginHelper import exh.md.network.MangaDexLoginHelper
import exh.md.network.NoSessionException import exh.md.network.NoSessionException
@ -36,10 +38,8 @@ import exh.md.utils.MdUtil
import exh.metadata.metadata.MangaDexSearchMetadata import exh.metadata.metadata.MangaDexSearchMetadata
import exh.source.DelegatedHttpSource import exh.source.DelegatedHttpSource
import exh.ui.metadata.adapters.MangaDexDescriptionAdapter import exh.ui.metadata.adapters.MangaDexDescriptionAdapter
import okhttp3.CacheControl
import okhttp3.Headers import okhttp3.Headers
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.Response import okhttp3.Response
import rx.Observable import rx.Observable
import tachiyomi.source.model.ChapterInfo import tachiyomi.source.model.ChapterInfo
@ -69,9 +69,9 @@ class MangaDex(delegate: HttpSource, val context: Context) :
val preferences = Injekt.get<PreferencesHelper>() val preferences = Injekt.get<PreferencesHelper>()
val mdList: MdList = Injekt.get<TrackManager>().mdList val mdList: MdList = Injekt.get<TrackManager>().mdList
/*private val sourcePreferences: SharedPreferences by lazy { private val sourcePreferences: SharedPreferences by lazy {
context.getSharedPreferences("source_$id", 0x0000) context.getSharedPreferences("source_$id", 0x0000)
}*/ }
private val loginHelper = MangaDexLoginHelper(networkHttpClient, preferences, mdList) private val loginHelper = MangaDexLoginHelper(networkHttpClient, preferences, mdList)
@ -81,7 +81,8 @@ class MangaDex(delegate: HttpSource, val context: Context) :
) )
.build() .build()
private fun useLowQualityThumbnail() = false // sourcePreferences.getInt(SHOW_THUMBNAIL_PREF, 0) == LOW_QUALITY private fun dataSaver() = sourcePreferences.getBoolean(getDataSaverPreferenceKey(mdLang.lang), false)
private fun usePort443Only() = sourcePreferences.getBoolean(getStandardHttpsPreferenceKey(mdLang.lang), false)
private val apiMangaParser by lazy { private val apiMangaParser by lazy {
ApiMangaParser(baseHttpClient, mdLang.lang) ApiMangaParser(baseHttpClient, mdLang.lang)
@ -101,6 +102,9 @@ class MangaDex(delegate: HttpSource, val context: Context) :
private val mangaPlusHandler by lazy { private val mangaPlusHandler by lazy {
MangaPlusHandler(network.client) MangaPlusHandler(network.client)
} }
private val pageHandler by lazy {
PageHandler(network.client, headers, apiChapterParser, mangaPlusHandler, preferences, mdList)
}
/*override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> = /*override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> =
urlImportFetchSearchManga(context, query) { urlImportFetchSearchManga(context, query) {
@ -148,18 +152,7 @@ class MangaDex(delegate: HttpSource, val context: Context) :
} }
override fun fetchPageList(chapter: SChapter): Observable<List<Page>> { override fun fetchPageList(chapter: SChapter): Observable<List<Page>> {
return if (chapter.scanlator == "MangaPlus") { return pageHandler.fetchPageList(chapter, isLogged(), usePort443Only(), dataSaver())
mangaPlusHandler.client.newCall(mangaPlusPageListRequest(chapter))
.asObservableSuccess()
.map { response ->
val chapterId = apiChapterParser.externalParse(response)
mangaPlusHandler.fetchPageList(chapterId)
}
} else super.fetchPageList(chapter)
}
private fun mangaPlusPageListRequest(chapter: SChapter): Request {
return GET(MdUtil.chapterUrl + MdUtil.getChapterId(chapter.url), headers, CacheControl.FORCE_NETWORK)
} }
override fun fetchImage(page: Page): Observable<Response> { override fun fetchImage(page: Page): Observable<Response> {
@ -286,9 +279,17 @@ class MangaDex(delegate: HttpSource, val context: Context) :
else -> fail() else -> fail()
}*/ }*/
/*companion object { companion object {
private const val REMEMBER_ME = "mangadex_rememberme_token" private const val dataSaverPref = "dataSaverV5"
private const val SHOW_THUMBNAIL_PREF = "showThumbnailDefault"
private const val LOW_QUALITY = 1 fun getDataSaverPreferenceKey(dexLang: String): String {
}*/ return "${dataSaverPref}_$dexLang"
}
private const val standardHttpsPortPref = "usePort443"
fun getStandardHttpsPreferenceKey(dexLang: String): String {
return "${standardHttpsPortPref}_$dexLang"
}
}
} }

View File

@ -38,10 +38,10 @@ class PageHandler(
"${MdUtil.atHomeUrl}/${MdUtil.getChapterId(chapter.url)}" "${MdUtil.atHomeUrl}/${MdUtil.getChapterId(chapter.url)}"
} }
val (client, headers) = if (isLogged) { val headers = if (isLogged) {
client to MdUtil.getAuthHeaders(headers, preferences, mdList) MdUtil.getAuthHeaders(headers, preferences, mdList)
} else { } else {
client to headers headers
} }
return client.newCall(pageListRequest(chapter)) return client.newCall(pageListRequest(chapter))
@ -53,6 +53,6 @@ class PageHandler(
} }
private fun pageListRequest(chapter: SChapter): Request { private fun pageListRequest(chapter: SChapter): Request {
return GET("${MdUtil.chapterUrl}${MdUtil.getChapterId(chapter.url)}", headers, CacheControl.FORCE_NETWORK) return GET(MdUtil.chapterUrl + MdUtil.getChapterId(chapter.url), headers, CacheControl.FORCE_NETWORK)
} }
} }