Cleanup recs

This commit is contained in:
Jobobby04 2021-06-10 17:20:54 -04:00
parent bf97dce150
commit d5638c6204

View File

@ -2,14 +2,15 @@ package exh.recs
import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.NetworkHelper
import eu.kanade.tachiyomi.network.POST import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.network.await 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.MangasPage
import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.ui.browse.source.browse.NoResultsException import eu.kanade.tachiyomi.ui.browse.source.browse.NoResultsException
import eu.kanade.tachiyomi.ui.browse.source.browse.Pager import eu.kanade.tachiyomi.ui.browse.source.browse.Pager
import eu.kanade.tachiyomi.util.lang.withIOContext import eu.kanade.tachiyomi.util.lang.withIOContext
import exh.log.maybeInjectEHLogger
import exh.util.MangaType import exh.util.MangaType
import exh.util.mangaType import exh.util.mangaType
import kotlinx.serialization.decodeFromString import kotlinx.serialization.decodeFromString
@ -24,15 +25,15 @@ import kotlinx.serialization.json.jsonPrimitive
import kotlinx.serialization.json.put import kotlinx.serialization.json.put
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.OkHttpClient
import okhttp3.RequestBody.Companion.toRequestBody import okhttp3.RequestBody.Companion.toRequestBody
import timber.log.Timber import timber.log.Timber
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
abstract class API(_endpoint: String) { abstract class API(val endpoint: String) {
var endpoint: String = _endpoint val client by lazy {
val client = OkHttpClient.Builder() Injekt.get<NetworkHelper>().client
.maybeInjectEHLogger() }
.build()
abstract suspend fun getRecsBySearch(search: String): List<SManga> abstract suspend fun getRecsBySearch(search: String): List<SManga>
} }
@ -71,9 +72,8 @@ class MyAnimeList : API("https://api.jikan.moe/v3/") {
.build() .build()
.toString() .toString()
val response = client.newCall(GET(url)).await() val data = client.newCall(GET(url)).await()
val body = withIOContext { response.body?.string() } ?: throw Exception("Null Response") .parseAs<JsonObject>()
val data = Json.decodeFromString<JsonObject>(body)
val results = data["results"] as? JsonArray val results = data["results"] as? JsonArray
if (results.isNullOrEmpty()) { if (results.isNullOrEmpty()) {
throw Exception("'$search' not found") throw Exception("'$search' not found")
@ -159,9 +159,8 @@ class Anilist : API("https://graphql.anilist.co/") {
} }
val payloadBody = payload.toString().toRequestBody("application/json; charset=utf-8".toMediaTypeOrNull()) val payloadBody = payload.toString().toRequestBody("application/json; charset=utf-8".toMediaTypeOrNull())
val response = client.newCall(POST(endpoint, body = payloadBody)).await() val data = client.newCall(POST(endpoint, body = payloadBody)).await()
val body = withIOContext { response.body?.string() } ?: throw Exception("Null Response") .parseAs<JsonObject>()
val data = Json.decodeFromString<JsonObject>(body)["data"] as? JsonObject ?: throw Exception("Unexpected response")
val media = data["Page"]?.jsonObject?.get("media")?.jsonArray val media = data["Page"]?.jsonObject?.get("media")?.jsonArray
if (media.isNullOrEmpty()) { if (media.isNullOrEmpty()) {