Convert SY specific usages of Gson to Kotlin Serialization

Cleanup saved searches a bit
Cleanup json parsing
This commit is contained in:
Jobobby04
2020-10-12 14:20:54 -04:00
parent bbfce97125
commit f3365cef67
46 changed files with 490 additions and 366 deletions
@@ -1,24 +1,27 @@
package exh.md.handlers
import com.github.salomonbrys.kotson.string
import com.google.gson.JsonParser
import eu.kanade.tachiyomi.source.model.Page
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.jsonArray
import kotlinx.serialization.json.jsonPrimitive
import okhttp3.Response
import java.util.Date
class ApiChapterParser {
fun pageListParse(response: Response): List<Page> {
val jsonData = response.body!!.string()
val json = JsonParser.parseString(jsonData).asJsonObject
val json = Json.decodeFromString<JsonObject>(jsonData)
val pages = mutableListOf<Page>()
val hash = json.get("hash").string
val pageArray = json.getAsJsonArray("page_array")
val server = json.get("server").string
val hash = json["hash"]!!.jsonPrimitive.content
val pageArray = json["page_array"]!!.jsonArray
val server = json["server"]!!.jsonPrimitive.content
pageArray.forEach {
val url = "$hash/${it.asString}"
val url = "$hash/${it.jsonPrimitive.content}"
pages.add(Page(pages.size, "$server,${response.request.url},${Date().time}", url))
}
@@ -27,8 +30,8 @@ class ApiChapterParser {
fun externalParse(response: Response): String {
val jsonData = response.body!!.string()
val json = JsonParser.parseString(jsonData).asJsonObject
val external = json.get("external").string
val json = Json.decodeFromString<JsonObject>(jsonData)
val external = json["external"]!!.jsonPrimitive.content
return external.substringAfterLast("/")
}
}
@@ -1,9 +1,6 @@
package exh.md.handlers
import com.elvishew.xlog.XLog
import com.github.salomonbrys.kotson.nullInt
import com.github.salomonbrys.kotson.obj
import com.google.gson.JsonParser
import eu.kanade.tachiyomi.data.database.DatabaseHelper
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.source.model.SChapter
@@ -18,6 +15,11 @@ import exh.metadata.metadata.base.RaisedTag
import exh.metadata.metadata.base.getFlatMetadataForManga
import exh.metadata.metadata.base.insertFlatMetadata
import exh.util.floor
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.intOrNull
import kotlinx.serialization.json.jsonPrimitive
import okhttp3.Response
import rx.Completable
import rx.Single
@@ -232,8 +234,8 @@ class ApiMangaParser(private val langs: List<String>) {
throw Exception("Null Response")
}
val jsonObject = JsonParser.parseString(body).obj
return jsonObject["manga_id"]?.nullInt ?: throw Exception("No manga associated with chapter")
val jsonObject = Json.decodeFromString<JsonObject>(body)
return jsonObject["manga_id"]?.jsonPrimitive?.intOrNull ?: throw Exception("No manga associated with chapter")
} catch (e: Exception) {
XLog.e(e)
throw e