From b519537b69ed4659888ecd1270c1bcfae54a2b52 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Wed, 19 Mar 2025 04:58:22 -0400 Subject: [PATCH] [O] Proper null handling for http --- src/main/java/ext/Http.kt | 6 +++--- .../icu/samnyan/aqua/net/transfer/AllNetClient.kt | 11 +++++------ .../java/icu/samnyan/aqua/net/transfer/DataBroker.kt | 4 ++-- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/main/java/ext/Http.kt b/src/main/java/ext/Http.kt index e2e4dba5..d0c73fe7 100644 --- a/src/main/java/ext/Http.kt +++ b/src/main/java/ext/Http.kt @@ -20,7 +20,7 @@ fun HttpRequest.Builder.post(body: Any? = null) = this.POST(when (body) { }).send() -inline fun HttpResponse.json(): T = body().json() +inline fun HttpResponse.json(): T? = body()?.json() fun HttpRequest.Builder.postZ(body: String) = run { header("Content-Type" to "application/json") @@ -29,6 +29,6 @@ fun HttpRequest.Builder.postZ(body: String) = run { } fun HttpResponse.header(key: String) = headers().firstValue(key).orElse(null) -fun HttpResponse.bodyString() = body().toString(Charsets.UTF_8) -fun HttpResponse.bodyZ() = ZLib.decompress(body()).decodeToString() +fun HttpResponse.bodyString() = body()?.toString(Charsets.UTF_8) +fun HttpResponse.bodyZ() = body()?.let { ZLib.decompress(it)?.decodeToString() } fun HttpResponse.bodyMaybeZ() = if (header("Content-Encoding") == "deflate") bodyZ() else bodyString() diff --git a/src/main/java/icu/samnyan/aqua/net/transfer/AllNetClient.kt b/src/main/java/icu/samnyan/aqua/net/transfer/AllNetClient.kt index ff00b7e5..034429f4 100644 --- a/src/main/java/icu/samnyan/aqua/net/transfer/AllNetClient.kt +++ b/src/main/java/icu/samnyan/aqua/net/transfer/AllNetClient.kt @@ -30,8 +30,7 @@ class AllNetClient(val dns: String, val keychip: String, val game: String, val v "$dns/sys/servlet/PowerOn".request() .header("Content-Type" to "application/x-www-form-urlencoded") .header("Pragma" to "DFI") - .post( - AllNetBillingDecoder.encodeAllNet(mapOf( + .post(AllNetBillingDecoder.encodeAllNet(mapOf( "game_id" to game, "ver" to version, "serial" to keychipShort, @@ -39,10 +38,10 @@ class AllNetClient(val dns: String, val keychip: String, val game: String, val v "encode" to "UTF-8", "format_ver" to "3", "hops" to "1", "token" to "2864179931" ))) .bodyString() - .split("&") - .map { it.split("=") } - .filter { it.size == 2 } - .associate { it[0] to it[1] }["uri"] + ?.split("&") + ?.map { it.split("=") } + ?.filter { it.size == 2 } + ?.associate { it[0] to it[1] }?.get("uri") ?: throw Exception("PowerOn Failed: No game URL returned") } diff --git a/src/main/java/icu/samnyan/aqua/net/transfer/DataBroker.kt b/src/main/java/icu/samnyan/aqua/net/transfer/DataBroker.kt index 667f7f3c..a4457215 100644 --- a/src/main/java/icu/samnyan/aqua/net/transfer/DataBroker.kt +++ b/src/main/java/icu/samnyan/aqua/net/transfer/DataBroker.kt @@ -26,7 +26,7 @@ abstract class DataBroker( inline fun String.getNullable(key: String, data: JDict): T? = "$url/$this".request() .postZ(mapper.write(data)) .bodyMaybeZ() - .jsonMap()[key] + ?.jsonMaybeMap()?.get(key) ?.let { mapper.convert(it) } ?.also { if (it is List<*>) log("✅ $this: ${it.size}") @@ -53,7 +53,7 @@ abstract class DataBroker( "$url/UpsertUserAllApi".request().postZ(mapper.write(mapOf( "userId" to allNet.userId, "upsertUserAll" to data.jsonMap() - ))).bodyMaybeZ().also { log(it) } + ))).bodyMaybeZ()?.also { log(it) } } }