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' extName = 'Picacomic'
pkgNameSuffix = 'zh.picacomic' pkgNameSuffix = 'zh.picacomic'
extClass = '.Picacomic' extClass = '.Picacomic'
extVersionCode = 4 extVersionCode = 5
isNsfw = true isNsfw = true
} }

View File

@ -21,6 +21,12 @@ data class PicaResponse(
val data: PicaData, val data: PicaData,
) )
@Serializable
data class PicaJWTPayload(
val exp: Long? = null,
val iat: Long? = null,
)
@Serializable @Serializable
data class PicaData( data class PicaData(
// /comics/advanced-search: PicaSearchComics // /comics/advanced-search: PicaSearchComics

View File

@ -26,7 +26,6 @@ import okhttp3.MediaType.Companion.toMediaType
import okhttp3.Request import okhttp3.Request
import okhttp3.RequestBody.Companion.toRequestBody import okhttp3.RequestBody.Companion.toRequestBody
import okhttp3.Response import okhttp3.Response
import org.json.JSONObject
import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get import uy.kohesive.injekt.api.get
import java.net.URLEncoder 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) Date(it * 1000)
} }
val iat = payload?.getLong("iat")?.let { val iat = payload?.iat?.let {
Date(it * 1000) Date(it * 1000)
} }