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)
         }