From 195613cb1e8426177e5b2933e8e9b73ee720f9f2 Mon Sep 17 00:00:00 2001 From: Ahmad Ansori Palembani Date: Mon, 26 Aug 2024 07:33:37 +0700 Subject: [PATCH] refactor(network): Simplify helper Co-authored-by: arkon --- .../kanade/tachiyomi/network/NetworkHelper.kt | 74 +++++++++---------- 1 file changed, 34 insertions(+), 40 deletions(-) diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/NetworkHelper.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/NetworkHelper.kt index e038196729..f7681d42e9 100644 --- a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/NetworkHelper.kt +++ b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/NetworkHelper.kt @@ -5,63 +5,57 @@ import eu.kanade.tachiyomi.network.interceptor.CloudflareInterceptor import eu.kanade.tachiyomi.network.interceptor.IgnoreGzipInterceptor import eu.kanade.tachiyomi.network.interceptor.UncaughtExceptionInterceptor import eu.kanade.tachiyomi.network.interceptor.UserAgentInterceptor +import java.io.File +import java.util.concurrent.TimeUnit import okhttp3.Cache import okhttp3.OkHttpClient import okhttp3.brotli.BrotliInterceptor -import java.io.File -import java.util.concurrent.* class NetworkHelper( val context: Context, - private val networkPreferences: NetworkPreferences, + private val preferences: NetworkPreferences, 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() - private val userAgentInterceptor by lazy { UserAgentInterceptor(::defaultUserAgent) } - private val cloudflareInterceptor by lazy { - CloudflareInterceptor(context, cookieJar, ::defaultUserAgent) - } + val client: OkHttpClient = run { + val builder = OkHttpClient.Builder() + .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 - get() { - 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) + builder.addInterceptor( + CloudflareInterceptor(context, cookieJar, ::defaultUserAgent), + ) - when (networkPreferences.dohProvider().get()) { - PREF_DOH_CLOUDFLARE -> dohCloudflare() - PREF_DOH_GOOGLE -> dohGoogle() - PREF_DOH_ADGUARD -> dohAdGuard() - PREF_DOH_QUAD9 -> dohQuad9() - } - } + block(builder) - 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() } - - @Suppress("UNUSED") - val cloudflareClient by lazy { - client.newBuilder() - .addInterceptor(cloudflareInterceptor) - .build() + builder.build() } + @Deprecated("The regular client handles Cloudflare by default") + @Suppress("UNUSED") + val cloudflareClient: OkHttpClient = client + val defaultUserAgent - get() = networkPreferences.defaultUserAgent().get().replace("\n", " ").trim() + get() = preferences.defaultUserAgent().get().replace("\n", " ").trim() }