mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 02:34:39 +00:00
refactor(network): Simplify helper
Co-authored-by: arkon <arkon@users.noreply.github.com>
This commit is contained in:
parent
5bd2190980
commit
195613cb1e
1 changed files with 34 additions and 40 deletions
|
@ -5,63 +5,57 @@ import eu.kanade.tachiyomi.network.interceptor.CloudflareInterceptor
|
||||||
import eu.kanade.tachiyomi.network.interceptor.IgnoreGzipInterceptor
|
import eu.kanade.tachiyomi.network.interceptor.IgnoreGzipInterceptor
|
||||||
import eu.kanade.tachiyomi.network.interceptor.UncaughtExceptionInterceptor
|
import eu.kanade.tachiyomi.network.interceptor.UncaughtExceptionInterceptor
|
||||||
import eu.kanade.tachiyomi.network.interceptor.UserAgentInterceptor
|
import eu.kanade.tachiyomi.network.interceptor.UserAgentInterceptor
|
||||||
|
import java.io.File
|
||||||
|
import java.util.concurrent.TimeUnit
|
||||||
import okhttp3.Cache
|
import okhttp3.Cache
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
import okhttp3.brotli.BrotliInterceptor
|
import okhttp3.brotli.BrotliInterceptor
|
||||||
import java.io.File
|
|
||||||
import java.util.concurrent.*
|
|
||||||
|
|
||||||
class NetworkHelper(
|
class NetworkHelper(
|
||||||
val context: Context,
|
val context: Context,
|
||||||
private val networkPreferences: NetworkPreferences,
|
private val preferences: NetworkPreferences,
|
||||||
private val block: (OkHttpClient.Builder) -> Unit,
|
private val block: (OkHttpClient.Builder) -> Unit,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
private val cacheDir = File(context.cacheDir, "network_cache")
|
|
||||||
|
|
||||||
private val cacheSize = 5L * 1024 * 1024 // 5 MiB
|
|
||||||
|
|
||||||
val cookieJar = AndroidCookieJar()
|
val cookieJar = AndroidCookieJar()
|
||||||
|
|
||||||
private val userAgentInterceptor by lazy { UserAgentInterceptor(::defaultUserAgent) }
|
val client: OkHttpClient = run {
|
||||||
private val cloudflareInterceptor by lazy {
|
val builder = OkHttpClient.Builder()
|
||||||
CloudflareInterceptor(context, cookieJar, ::defaultUserAgent)
|
.cookieJar(cookieJar)
|
||||||
}
|
.connectTimeout(30, TimeUnit.SECONDS)
|
||||||
|
.readTimeout(30, TimeUnit.SECONDS)
|
||||||
|
.callTimeout(2, TimeUnit.MINUTES)
|
||||||
|
.cache(
|
||||||
|
Cache(
|
||||||
|
directory = File(context.cacheDir, "network_cache"),
|
||||||
|
maxSize = 5L * 1024 * 1024, // 5 MiB
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.addInterceptor(UncaughtExceptionInterceptor())
|
||||||
|
.addInterceptor(UserAgentInterceptor(::defaultUserAgent))
|
||||||
|
.addNetworkInterceptor(IgnoreGzipInterceptor())
|
||||||
|
.addNetworkInterceptor(BrotliInterceptor)
|
||||||
|
|
||||||
private val baseClientBuilder: OkHttpClient.Builder
|
builder.addInterceptor(
|
||||||
get() {
|
CloudflareInterceptor(context, cookieJar, ::defaultUserAgent),
|
||||||
val builder = OkHttpClient.Builder()
|
)
|
||||||
.cookieJar(cookieJar)
|
|
||||||
.connectTimeout(30, TimeUnit.SECONDS)
|
|
||||||
.readTimeout(30, TimeUnit.SECONDS)
|
|
||||||
.callTimeout(2, TimeUnit.MINUTES)
|
|
||||||
.addInterceptor(UncaughtExceptionInterceptor())
|
|
||||||
.addInterceptor(userAgentInterceptor)
|
|
||||||
.addNetworkInterceptor(IgnoreGzipInterceptor())
|
|
||||||
.addNetworkInterceptor(BrotliInterceptor)
|
|
||||||
.apply {
|
|
||||||
block(this)
|
|
||||||
|
|
||||||
when (networkPreferences.dohProvider().get()) {
|
block(builder)
|
||||||
PREF_DOH_CLOUDFLARE -> dohCloudflare()
|
|
||||||
PREF_DOH_GOOGLE -> dohGoogle()
|
|
||||||
PREF_DOH_ADGUARD -> dohAdGuard()
|
|
||||||
PREF_DOH_QUAD9 -> dohQuad9()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return builder
|
when (preferences.dohProvider().get()) {
|
||||||
|
PREF_DOH_CLOUDFLARE -> builder.dohCloudflare()
|
||||||
|
PREF_DOH_GOOGLE -> builder.dohGoogle()
|
||||||
|
PREF_DOH_ADGUARD -> builder.dohAdGuard()
|
||||||
|
PREF_DOH_QUAD9 -> builder.dohQuad9()
|
||||||
}
|
}
|
||||||
|
|
||||||
val client by lazy { baseClientBuilder.cache(Cache(cacheDir, cacheSize)).build() }
|
builder.build()
|
||||||
|
|
||||||
@Suppress("UNUSED")
|
|
||||||
val cloudflareClient by lazy {
|
|
||||||
client.newBuilder()
|
|
||||||
.addInterceptor(cloudflareInterceptor)
|
|
||||||
.build()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated("The regular client handles Cloudflare by default")
|
||||||
|
@Suppress("UNUSED")
|
||||||
|
val cloudflareClient: OkHttpClient = client
|
||||||
|
|
||||||
val defaultUserAgent
|
val defaultUserAgent
|
||||||
get() = networkPreferences.defaultUserAgent().get().replace("\n", " ").trim()
|
get() = preferences.defaultUserAgent().get().replace("\n", " ").trim()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue