From 80952ac072cd7a76666bea3d864e5d5eb0b4ba1e Mon Sep 17 00:00:00 2001 From: Secozzi <49240133+Secozzi@users.noreply.github.com> Date: Tue, 4 Jul 2023 10:35:56 +0200 Subject: [PATCH] fix(all/googledriveindex): fix file sizes & use parseAs function (#1828) --- src/all/googledriveindex/build.gradle | 2 +- .../all/googledriveindex/GoogleDriveIndex.kt | 21 +++++++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/all/googledriveindex/build.gradle b/src/all/googledriveindex/build.gradle index 5e4fffa4e..27db7b53d 100644 --- a/src/all/googledriveindex/build.gradle +++ b/src/all/googledriveindex/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'GoogleDriveIndex' pkgNameSuffix = 'all.googledriveindex' extClass = '.GoogleDriveIndex' - extVersionCode = 6 + extVersionCode = 7 libVersion = '13' } diff --git a/src/all/googledriveindex/src/eu/kanade/tachiyomi/animeextension/all/googledriveindex/GoogleDriveIndex.kt b/src/all/googledriveindex/src/eu/kanade/tachiyomi/animeextension/all/googledriveindex/GoogleDriveIndex.kt index 86e238ce4..59d2e97c8 100644 --- a/src/all/googledriveindex/src/eu/kanade/tachiyomi/animeextension/all/googledriveindex/GoogleDriveIndex.kt +++ b/src/all/googledriveindex/src/eu/kanade/tachiyomi/animeextension/all/googledriveindex/GoogleDriveIndex.kt @@ -282,10 +282,9 @@ class GoogleDriveIndex : ConfigurableAnimeSource, AnimeHttpSource() { val popBody = "password=&page_token=$newToken&page_index=$newPageIndex".toRequestBody("application/x-www-form-urlencoded".toMediaType()) - val parsedBody = client.newCall( + val parsed = client.newCall( POST(newParsed.url, body = popBody, headers = popHeaders), - ).execute().body.string().decrypt() - val parsed = json.decodeFromString(parsedBody) + ).execute().parseAs { it.decrypt() } parsed.data.files.forEach { item -> if (item.mimeType.startsWith("image/") && item.name.startsWith("cover", true)) { @@ -386,10 +385,9 @@ class GoogleDriveIndex : ConfigurableAnimeSource, AnimeHttpSource() { val popBody = "password=&page_token=$newToken&page_index=$newPageIndex".toRequestBody("application/x-www-form-urlencoded".toMediaType()) - val parsedBody = client.newCall( + val parsed = client.newCall( POST(url, body = popBody, headers = popHeaders), - ).execute().body.string().decrypt() - val parsed = json.decodeFromString(parsedBody) + ).execute().parseAs { it.decrypt() } parsed.data.files.forEach { item -> if (item.mimeType.endsWith("folder")) { @@ -493,6 +491,11 @@ class GoogleDriveIndex : ConfigurableAnimeSource, AnimeHttpSource() { // ============================= Utilities ============================== + private inline fun Response.parseAs(transform: (String) -> String = { it }): T { + val responseBody = use { transform(it.body.string()) } + return json.decodeFromString(responseBody) + } + private fun HttpUrl.hostAndCred(): String { return if (this.password.isNotBlank() && this.username.isNotBlank()) { "${this.username}:${this.password}@${this.host}" @@ -532,9 +535,9 @@ class GoogleDriveIndex : ConfigurableAnimeSource, AnimeHttpSource() { private fun formatFileSize(bytes: Long): String { return when { - bytes >= 1073741824 -> "%.2f GB".format(bytes / 1073741824.0) - bytes >= 1048576 -> "%.2f MB".format(bytes / 1048576.0) - bytes >= 1024 -> "%.2f KB".format(bytes / 1024.0) + bytes >= 1_000_000_000 -> "%.2f GB".format(bytes / 1_000_000_000.0) + bytes >= 1_000_000 -> "%.2f MB".format(bytes / 1_000_000.0) + bytes >= 1_000 -> "%.2f KB".format(bytes / 1_000.0) bytes > 1 -> "$bytes bytes" bytes == 1L -> "$bytes byte" else -> ""