komikku/app/src/main/java/exh/md/handlers/SimilarHandler.kt

40 lines
1.4 KiB
Kotlin
Raw Normal View History

package exh.md.handlers
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.await
import eu.kanade.tachiyomi.network.parseAs
import eu.kanade.tachiyomi.source.model.MangasPage
import eu.kanade.tachiyomi.source.model.SManga
import exh.md.handlers.serializers.SimilarMangaResponse
import exh.md.utils.MdUtil
import okhttp3.CacheControl
import okhttp3.Headers
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.Response
import tachiyomi.source.model.MangaInfo
2021-05-17 18:45:33 +02:00
class SimilarHandler(val client: OkHttpClient, val lang: String) {
suspend fun getSimilar(manga: MangaInfo): MangasPage {
val response = client.newCall(similarMangaRequest(manga)).await()
return similarMangaParse(response)
}
private fun similarMangaRequest(manga: MangaInfo): Request {
val tempUrl = MdUtil.similarBaseApi + MdUtil.getMangaId(manga.key) + ".json"
return GET(tempUrl, Headers.Builder().build(), CacheControl.FORCE_NETWORK)
}
private fun similarMangaParse(response: Response): MangasPage {
val mangaList = response.parseAs<SimilarMangaResponse>().matches.map {
SManga.create().apply {
2021-05-17 18:45:33 +02:00
url = MdUtil.buildMangaUrl(it.id)
title = MdUtil.cleanString(it.title[lang] ?: it.title["en"]!!)
2021-05-17 18:45:33 +02:00
thumbnail_url = MdUtil.formThumbUrl(url)
}
}
return MangasPage(mangaList, false)
}
}