From ae81ee5ded503c35fa8ccb8feb6677e638153fc6 Mon Sep 17 00:00:00 2001
From: Alessandro Jean <14254807+alessandrojean@users.noreply.github.com>
Date: Wed, 25 Oct 2023 16:05:10 -0300
Subject: [PATCH] Remove the try-catch wrapping in MangaDex. (#18716)

---
 src/all/mangadex/build.gradle                 |  2 +-
 .../all/mangadex/MdAtHomeReportInterceptor.kt | 41 +++++++++++--------
 .../all/mangadex/MdUserAgentInterceptor.kt    | 31 ++++++--------
 3 files changed, 38 insertions(+), 36 deletions(-)

diff --git a/src/all/mangadex/build.gradle b/src/all/mangadex/build.gradle
index 1e63414ee..101966ce6 100644
--- a/src/all/mangadex/build.gradle
+++ b/src/all/mangadex/build.gradle
@@ -6,7 +6,7 @@ ext {
     extName = 'MangaDex'
     pkgNameSuffix = 'all.mangadex'
     extClass = '.MangaDexFactory'
-    extVersionCode = 191
+    extVersionCode = 192
     isNsfw = true
 }
 
diff --git a/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MdAtHomeReportInterceptor.kt b/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MdAtHomeReportInterceptor.kt
index 4c4bc315f..c05de244f 100644
--- a/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MdAtHomeReportInterceptor.kt
+++ b/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MdAtHomeReportInterceptor.kt
@@ -12,6 +12,7 @@ import okhttp3.HttpUrl.Companion.toHttpUrl
 import okhttp3.Interceptor
 import okhttp3.MediaType.Companion.toMediaType
 import okhttp3.OkHttpClient
+import okhttp3.Request
 import okhttp3.RequestBody.Companion.toRequestBody
 import okhttp3.Response
 import uy.kohesive.injekt.injectLazy
@@ -37,21 +38,7 @@ class MdAtHomeReportInterceptor(
 
         Log.e("MangaDex", "Connecting to MD@Home node at $url")
 
-        val result = ImageReportDto(
-            url = url,
-            success = response.isSuccessful,
-            bytes = response.peekBody(Long.MAX_VALUE).bytes().size,
-            cached = response.headers["X-Cache"] == "HIT",
-            duration = response.receivedResponseAtMillis - response.sentRequestAtMillis,
-        )
-
-        val payload = json.encodeToString(result)
-
-        val reportRequest = POST(
-            url = MDConstants.atHomePostUrl,
-            headers = headers,
-            body = payload.toRequestBody(JSON_MEDIA_TYPE),
-        )
+        val reportRequest = mdAtHomeReportRequest(response)
 
         // Execute the report endpoint network call asynchronously to avoid blocking
         // the reader from showing the image once it's fully loaded if the report call
@@ -66,8 +53,12 @@ class MdAtHomeReportInterceptor(
 
         Log.e("MangaDex", "Error connecting to MD@Home node, fallback to uploads server")
 
+        val imagePath = originalRequest.url.pathSegments
+            .dropWhile { it != "data" && it != "data-saver" }
+            .joinToString("/")
+
         val fallbackUrl = MDConstants.cdnUrl.toHttpUrl().newBuilder()
-            .addPathSegments(originalRequest.url.pathSegments.dropWhile{ it != "data" && it != "data-saver" }.joinToString("/"))
+            .addPathSegments(imagePath)
             .build()
 
         val fallbackRequest = originalRequest.newBuilder()
@@ -78,6 +69,24 @@ class MdAtHomeReportInterceptor(
         return chain.proceed(fallbackRequest)
     }
 
+    private fun mdAtHomeReportRequest(response: Response): Request {
+        val result = ImageReportDto(
+            url = response.request.url.toString(),
+            success = response.isSuccessful,
+            bytes = response.peekBody(Long.MAX_VALUE).bytes().size,
+            cached = response.headers["X-Cache"] == "HIT",
+            duration = response.receivedResponseAtMillis - response.sentRequestAtMillis,
+        )
+
+        val payload = json.encodeToString(result)
+
+        return POST(
+            url = MDConstants.atHomePostUrl,
+            headers = headers,
+            body = payload.toRequestBody(JSON_MEDIA_TYPE),
+        )
+    }
+
     companion object {
         private val JSON_MEDIA_TYPE = "application/json".toMediaType()
         private val MD_AT_HOME_URL_REGEX =
diff --git a/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MdUserAgentInterceptor.kt b/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MdUserAgentInterceptor.kt
index e20adce6e..1771daf94 100644
--- a/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MdUserAgentInterceptor.kt
+++ b/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MdUserAgentInterceptor.kt
@@ -19,29 +19,22 @@ class MdUserAgentInterceptor(
             MDConstants.defaultUserAgent,
         )
 
-    private fun getUserAgent(): String? {
-        return preferences.customUserAgent
-    }
-
     override fun intercept(chain: Interceptor.Chain): Response {
-        try {
-            val originalRequest = chain.request()
+        val originalRequest = chain.request()
 
-            val newUserAgent = getUserAgent() ?: return chain.proceed(originalRequest)
+        val newUserAgent = preferences.customUserAgent
+            ?: return chain.proceed(originalRequest)
 
-            val originalHeaders = originalRequest.headers
+        val originalHeaders = originalRequest.headers
 
-            val modifiedHeaders = originalHeaders.newBuilder()
-                .set("User-Agent", newUserAgent)
-                .build()
+        val modifiedHeaders = originalHeaders.newBuilder()
+            .set("User-Agent", newUserAgent)
+            .build()
 
-            return chain.proceed(
-                originalRequest.newBuilder()
-                    .headers(modifiedHeaders)
-                    .build(),
-            )
-        } catch (e: Exception) {
-            throw IOException("MdUserAgentInterceptor failed with error: ${e.message}")
-        }
+        val modifiedRequest = originalRequest.newBuilder()
+            .headers(modifiedHeaders)
+            .build()
+
+        return chain.proceed(modifiedRequest)
     }
 }