PicaComic: Fix bad base64 (#382)

Maybe fix bad base64
This commit is contained in:
bapeey 2024-01-19 07:30:30 -05:00 committed by Draff
parent 3922547fa3
commit bcb3c31237
3 changed files with 17 additions and 5 deletions

View File

@ -2,7 +2,7 @@ ext {
extName = 'Picacomic'
pkgNameSuffix = 'zh.picacomic'
extClass = '.Picacomic'
extVersionCode = 4
extVersionCode = 5
isNsfw = true
}

View File

@ -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

View File

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