From 3b2199127bc9495043e5e46c7f866cbfe3fba7e4 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Mon, 10 Mar 2025 16:46:39 -0400 Subject: [PATCH] [+] Http extensions --- src/main/java/ext/Http.kt | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/ext/Http.kt b/src/main/java/ext/Http.kt index 83016a3d..e2e4dba5 100644 --- a/src/main/java/ext/Http.kt +++ b/src/main/java/ext/Http.kt @@ -1,5 +1,6 @@ package ext +import icu.samnyan.aqua.sega.util.ZLib import java.net.URI import java.net.http.HttpClient import java.net.http.HttpRequest @@ -7,10 +8,9 @@ import java.net.http.HttpResponse val client = HttpClient.newBuilder().build() -fun HttpRequest.Builder.send() = client.send(this.build(), HttpResponse.BodyHandlers.ofString()) +fun HttpRequest.Builder.send() = client.send(this.build(), HttpResponse.BodyHandlers.ofByteArray()) fun HttpRequest.Builder.header(pair: Pair) = this.header(pair.first.toString(), pair.second.toString()) fun String.request() = HttpRequest.newBuilder(URI.create(this)) -inline fun String.postJson(body: Any) = request().post(body).json() fun HttpRequest.Builder.post(body: Any? = null) = this.POST(when (body) { is ByteArray -> HttpRequest.BodyPublishers.ofByteArray(body) @@ -19,5 +19,16 @@ fun HttpRequest.Builder.post(body: Any? = null) = this.POST(when (body) { else -> throw Exception("Unsupported body type") }).send() + inline fun HttpResponse.json(): T = body().json() +fun HttpRequest.Builder.postZ(body: String) = run { + header("Content-Type" to "application/json") + header("Content-Encoding" to "deflate") + post(ZLib.compress(body.toByteArray())) +} + +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.bodyMaybeZ() = if (header("Content-Encoding") == "deflate") bodyZ() else bodyString()