From 933b134beb3ae2915d5608b0ba5e16f5217ad1b1 Mon Sep 17 00:00:00 2001 From: Alessandro Jean Date: Thu, 30 May 2019 13:54:52 -0300 Subject: [PATCH] Fix "Open in browser" in HipercooL (#1153) Fix "Open in browser" in HipercooL --- src/pt/hipercool/build.gradle | 2 +- .../extension/pt/hipercool/Hipercool.kt | 31 ++++++++++++------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/pt/hipercool/build.gradle b/src/pt/hipercool/build.gradle index fafd683f2..793d7ec96 100644 --- a/src/pt/hipercool/build.gradle +++ b/src/pt/hipercool/build.gradle @@ -5,7 +5,7 @@ ext { appName = 'Tachiyomi: HipercooL' pkgNameSuffix = 'pt.hipercool' extClass = '.Hipercool' - extVersionCode = 1 + extVersionCode = 2 libVersion = '1.2' } diff --git a/src/pt/hipercool/src/eu/kanade/tachiyomi/extension/pt/hipercool/Hipercool.kt b/src/pt/hipercool/src/eu/kanade/tachiyomi/extension/pt/hipercool/Hipercool.kt index 16f0c8cdc..662e08613 100644 --- a/src/pt/hipercool/src/eu/kanade/tachiyomi/extension/pt/hipercool/Hipercool.kt +++ b/src/pt/hipercool/src/eu/kanade/tachiyomi/extension/pt/hipercool/Hipercool.kt @@ -6,6 +6,7 @@ import com.google.gson.JsonObject import com.google.gson.JsonParser import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.POST +import eu.kanade.tachiyomi.network.asObservableSuccess import eu.kanade.tachiyomi.source.model.* import eu.kanade.tachiyomi.source.online.HttpSource import okhttp3.* @@ -24,13 +25,10 @@ class Hipercool : HttpSource() { override val supportsLatest = true - private val catalogHeaders = Headers.Builder() - .apply { - add("User-Agent", USER_AGENT) - add("Referer", baseUrl) - add("X-Requested-With", "XMLHttpRequest") - } - .build() + override fun headersBuilder(): Headers.Builder = Headers.Builder() + .add("User-Agent", USER_AGENT) + .add("Referer", baseUrl) + .add("X-Requested-With", "XMLHttpRequest") private fun generalListMangaParse(obj: JsonObject): SManga { val book = obj["_book"].obj @@ -50,7 +48,7 @@ class Hipercool : HttpSource() { override fun popularMangaParse(response: Response): MangasPage = latestUpdatesParse(response) override fun latestUpdatesRequest(page: Int): Request { - return GET("$baseUrl/api/books/chapters?start=${(page - 1) * 40}&count=40", catalogHeaders) + return GET("$baseUrl/api/books/chapters?start=${(page - 1) * 40}&count=40", headers) } override fun latestUpdatesParse(response: Response): MangasPage { @@ -81,7 +79,7 @@ class Hipercool : HttpSource() { val body = RequestBody.create(mediaType, json.toString()) - return POST("$baseUrl/api/books/chapters/search", catalogHeaders, body) + return POST("$baseUrl/api/books/chapters/search", headers, body) } override fun searchMangaParse(response: Response): MangasPage { @@ -99,10 +97,19 @@ class Hipercool : HttpSource() { private fun searchMangaItemParse(obj: JsonObject): SManga = generalListMangaParse(obj) - override fun mangaDetailsRequest(manga: SManga): Request { + // Workaround to allow "Open in browser" use the real URL. + override fun fetchMangaDetails(manga: SManga): Observable { + return client.newCall(mangaDetailsApiRequest(manga)) + .asObservableSuccess() + .map { response -> + mangaDetailsParse(response).apply { initialized = true } + } + } + + private fun mangaDetailsApiRequest(manga: SManga): Request { val slug = manga.url.substringAfterLast("/") - return GET("$baseUrl/api/books/$slug", catalogHeaders) + return GET("$baseUrl/api/books/$slug", headers) } override fun mangaDetailsParse(response: Response): SManga { @@ -134,7 +141,7 @@ class Hipercool : HttpSource() { } // Chapters are available in the same url of the manga details. - override fun chapterListRequest(manga: SManga): Request = mangaDetailsRequest(manga) + override fun chapterListRequest(manga: SManga): Request = mangaDetailsApiRequest(manga) override fun chapterListParse(response: Response): List { val result = response.asJsonObject()