diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c8eb90c8..1e8b5fd44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,9 @@ The format is a modified version of [Keep a Changelog](https://keepachangelog.co - `Other` - for technical stuff. ## [Unreleased] +### Changed +- Delegate Suwayomi tracker authentication to extension ([@cpiber](https://github.com/cpiber)) ([#2476](https://github.com/mihonapp/mihon/pull/2476)) + ### Fixes - Fix height of description not being calculated correctly if images are present ([@Secozzi](https://github.com/Secozzi)) ([#2382](https://github.com/mihonapp/mihon/pull/2382)) - Fix migration progress not updating after manual search ([@Secozzi](https://github.com/Secozzi)) ([#2484](https://github.com/mihonapp/mihon/pull/2484)) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/suwayomi/SuwayomiApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/suwayomi/SuwayomiApi.kt index c7cc8a188..516984842 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/suwayomi/SuwayomiApi.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/suwayomi/SuwayomiApi.kt @@ -1,22 +1,18 @@ package eu.kanade.tachiyomi.data.track.suwayomi -import android.app.Application -import android.content.Context -import android.content.SharedPreferences import eu.kanade.tachiyomi.data.database.models.Track import eu.kanade.tachiyomi.data.track.model.TrackSearch import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.network.NetworkHelper import eu.kanade.tachiyomi.network.PUT import eu.kanade.tachiyomi.network.awaitSuccess import eu.kanade.tachiyomi.network.parseAs +import eu.kanade.tachiyomi.source.online.HttpSource import kotlinx.serialization.json.Json -import okhttp3.Credentials -import okhttp3.Dns import okhttp3.FormBody import okhttp3.Headers import okhttp3.OkHttpClient import tachiyomi.core.common.util.lang.withIOContext +import tachiyomi.domain.source.service.SourceManager import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy @@ -25,26 +21,13 @@ import java.security.MessageDigest class SuwayomiApi(private val trackId: Long) { - private val network: NetworkHelper by injectLazy() private val json: Json by injectLazy() - private val client: OkHttpClient = - network.client.newBuilder() - .dns(Dns.SYSTEM) // don't use DNS over HTTPS as it breaks IP addressing - .build() - - private fun headersBuilder(): Headers.Builder = Headers.Builder().apply { - if (basePassword.isNotEmpty() && baseLogin.isNotEmpty()) { - val credentials = Credentials.basic(baseLogin, basePassword) - add("Authorization", credentials) - } - } - - private val headers: Headers by lazy { headersBuilder().build() } - - private val baseUrl by lazy { getPrefBaseUrl() } - private val baseLogin by lazy { getPrefBaseLogin() } - private val basePassword by lazy { getPrefBasePassword() } + private val sourceManager: SourceManager by injectLazy() + private val source: HttpSource by lazy { (sourceManager.get(sourceId) as HttpSource) } + private val client: OkHttpClient by lazy { source.client } + private val headers: Headers by lazy { source.headers } + private val baseUrl: String by lazy { source.baseUrl.trimEnd('/') } suspend fun getTrackSearch(trackUrl: String): TrackSearch = withIOContext { val url = try { @@ -105,19 +88,4 @@ class SuwayomiApi(private val trackId: Long) { val bytes = MessageDigest.getInstance("MD5").digest(key.toByteArray()) (0..7).map { bytes[it].toLong() and 0xff shl 8 * (7 - it) }.reduce(Long::or) and Long.MAX_VALUE } - - private val preferences: SharedPreferences by lazy { - Injekt.get().getSharedPreferences("source_$sourceId", Context.MODE_PRIVATE) - } - - private fun getPrefBaseUrl(): String = preferences.getString(ADDRESS_TITLE, ADDRESS_DEFAULT)!! - private fun getPrefBaseLogin(): String = preferences.getString(LOGIN_TITLE, LOGIN_DEFAULT)!! - private fun getPrefBasePassword(): String = preferences.getString(PASSWORD_TITLE, PASSWORD_DEFAULT)!! } - -private const val ADDRESS_TITLE = "Server URL Address" -private const val ADDRESS_DEFAULT = "" -private const val LOGIN_TITLE = "Login (Basic Auth)" -private const val LOGIN_DEFAULT = "" -private const val PASSWORD_TITLE = "Password (Basic Auth)" -private const val PASSWORD_DEFAULT = ""