From bcb3c312377c3326156eca45f80f4d592128a023 Mon Sep 17 00:00:00 2001 From: bapeey <90949336+bapeey@users.noreply.github.com> Date: Fri, 19 Jan 2024 07:30:30 -0500 Subject: [PATCH] PicaComic: Fix bad base64 (#382) Maybe fix bad base64 --- src/zh/picacomic/build.gradle | 2 +- .../extension/zh/picacomic/PicaApiSchemas.kt | 6 ++++++ .../tachiyomi/extension/zh/picacomic/Picacomic.kt | 14 ++++++++++---- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/zh/picacomic/build.gradle b/src/zh/picacomic/build.gradle index 06f1b2460..693c7e798 100644 --- a/src/zh/picacomic/build.gradle +++ b/src/zh/picacomic/build.gradle @@ -2,7 +2,7 @@ ext { extName = 'Picacomic' pkgNameSuffix = 'zh.picacomic' extClass = '.Picacomic' - extVersionCode = 4 + extVersionCode = 5 isNsfw = true } diff --git a/src/zh/picacomic/src/eu/kanade/tachiyomi/extension/zh/picacomic/PicaApiSchemas.kt b/src/zh/picacomic/src/eu/kanade/tachiyomi/extension/zh/picacomic/PicaApiSchemas.kt index 587e8bd27..6af7d7647 100644 --- a/src/zh/picacomic/src/eu/kanade/tachiyomi/extension/zh/picacomic/PicaApiSchemas.kt +++ b/src/zh/picacomic/src/eu/kanade/tachiyomi/extension/zh/picacomic/PicaApiSchemas.kt @@ -21,6 +21,12 @@ data class PicaResponse( val data: PicaData, ) +@Serializable +data class PicaJWTPayload( + val exp: Long? = null, + val iat: Long? = null, +) + @Serializable data class PicaData( // /comics/advanced-search: PicaSearchComics diff --git a/src/zh/picacomic/src/eu/kanade/tachiyomi/extension/zh/picacomic/Picacomic.kt b/src/zh/picacomic/src/eu/kanade/tachiyomi/extension/zh/picacomic/Picacomic.kt index dc471f089..82e721e85 100644 --- a/src/zh/picacomic/src/eu/kanade/tachiyomi/extension/zh/picacomic/Picacomic.kt +++ b/src/zh/picacomic/src/eu/kanade/tachiyomi/extension/zh/picacomic/Picacomic.kt @@ -26,7 +26,6 @@ import okhttp3.MediaType.Companion.toMediaType import okhttp3.Request import okhttp3.RequestBody.Companion.toRequestBody import okhttp3.Response -import org.json.JSONObject import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import java.net.URLEncoder @@ -100,12 +99,19 @@ class Picacomic : HttpSource(), ConfigurableSource { ) } - val payload = parts[1]?.let { JSONObject(Base64.decode(it, Base64.DEFAULT).toString(Charsets.UTF_8)) } + val payload = parts[1]?.let { + json.decodeFromString<PicaJWTPayload>( + Base64.decode( + it, + Base64.URL_SAFE or Base64.NO_WRAP or Base64.NO_PADDING, + ).toString(Charsets.UTF_8), + ) + } - val exp = payload?.getLong("exp")?.let { + val exp = payload?.exp?.let { Date(it * 1000) } - val iat = payload?.getLong("iat")?.let { + val iat = payload?.iat?.let { Date(it * 1000) }