Remove the try-catch wrapping in MangaDex. (#18716)
This commit is contained in:
parent
5b79fd2229
commit
ae81ee5ded
@ -6,7 +6,7 @@ ext {
|
||||
extName = 'MangaDex'
|
||||
pkgNameSuffix = 'all.mangadex'
|
||||
extClass = '.MangaDexFactory'
|
||||
extVersionCode = 191
|
||||
extVersionCode = 192
|
||||
isNsfw = true
|
||||
}
|
||||
|
||||
|
@ -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 =
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user