diff --git a/src/pt/mangahost/build.gradle b/src/pt/mangahost/build.gradle index a77c8e579..4bc3c2b4f 100644 --- a/src/pt/mangahost/build.gradle +++ b/src/pt/mangahost/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'Mangá Host' pkgNameSuffix = 'pt.mangahost' extClass = '.MangaHost' - extVersionCode = 22 + extVersionCode = 23 libVersion = '1.2' } diff --git a/src/pt/mangahost/src/eu/kanade/tachiyomi/extension/pt/mangahost/MangaHost.kt b/src/pt/mangahost/src/eu/kanade/tachiyomi/extension/pt/mangahost/MangaHost.kt index e28f060a7..0181c0b74 100644 --- a/src/pt/mangahost/src/eu/kanade/tachiyomi/extension/pt/mangahost/MangaHost.kt +++ b/src/pt/mangahost/src/eu/kanade/tachiyomi/extension/pt/mangahost/MangaHost.kt @@ -38,11 +38,10 @@ class MangaHost : ParsedHttpSource() { override val supportsLatest = true override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .addInterceptor(::rateLimitIntercept) + .addInterceptor(RateLimitInterceptor(1, 3, TimeUnit.SECONDS)) + .addInterceptor(::blockMessageIntercept) .build() - private val rateLimitInterceptor = RateLimitInterceptor(1, 3, TimeUnit.SECONDS) - override fun headersBuilder(): Headers.Builder = Headers.Builder() .add("Accept", ACCEPT) .add("Accept-Language", ACCEPT_LANGUAGE) @@ -197,12 +196,15 @@ class MangaHost : ParsedHttpSource() { return GET(page.imageUrl!!, newHeaders) } - private fun rateLimitIntercept(chain: Interceptor.Chain): Response { - return if (chain.request().url().toString().contains(CDN_REGEX)) { - chain.proceed(chain.request()) - } else { - rateLimitInterceptor.intercept(chain) + private fun blockMessageIntercept(chain: Interceptor.Chain): Response { + val response = chain.proceed(chain.request()) + + if (!response.isSuccessful && response.code() == 403) { + response.close() + throw Exception(BLOCK_MESSAGE) } + + return response } private fun Call.asObservableIgnoreCode(code: Int): Observable { @@ -246,6 +248,8 @@ class MangaHost : ParsedHttpSource() { private val IMAGE_REGEX = "_(small|medium|xmedium)\\.".toRegex() private val CDN_REGEX = "/mangas_files/.*\\.jpg".toRegex() + private const val BLOCK_MESSAGE = "O site está bloqueando o Tachiyomi. Migre para outra fonte caso o problema persistir." + private val DATE_FORMAT by lazy { SimpleDateFormat("MMM dd, yyyy", Locale.ENGLISH) }