From 938339690eecdfe309d83264b6a89aff3c767687 Mon Sep 17 00:00:00 2001 From: arkon Date: Sun, 2 Jan 2022 17:57:20 -0500 Subject: [PATCH] Custom Cloudflare failure exception to avoid user-facing "java.lang.Exception" text --- .../network/interceptor/CloudflareInterceptor.kt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt b/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt index e519c10f40..6aabb98792 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt @@ -77,9 +77,12 @@ class CloudflareInterceptor(private val context: Context) : Interceptor { resolveWithWebView(originalRequest, oldCookie) return chain.proceed(originalRequest) + } + // Because OkHttp's enqueue only handles IOExceptions, wrap the exception so that + // we don't crash the entire app + catch (e: CloudflareBypassException) { + throw IOException(context.getString(R.string.information_cloudflare_bypass_failure)) } catch (e: Exception) { - // Because OkHttp's enqueue only handles IOExceptions, wrap the exception so that - // we don't crash the entire app throw IOException(e) } } @@ -171,7 +174,7 @@ class CloudflareInterceptor(private val context: Context) : Interceptor { context.toast(R.string.information_webview_outdated, Toast.LENGTH_LONG) } - throw Exception(context.getString(R.string.information_cloudflare_bypass_failure)) + throw CloudflareBypassException() } } @@ -181,3 +184,5 @@ class CloudflareInterceptor(private val context: Context) : Interceptor { private val COOKIE_NAMES = listOf("cf_clearance") } } + +private class CloudflareBypassException : Exception()