mirror of
https://github.com/MewoLab/AquaDX.git
synced 2026-02-12 17:17:58 +08:00
[O] Proper null handling for http
This commit is contained in:
@@ -20,7 +20,7 @@ fun HttpRequest.Builder.post(body: Any? = null) = this.POST(when (body) {
|
|||||||
}).send()
|
}).send()
|
||||||
|
|
||||||
|
|
||||||
inline fun <reified T> HttpResponse<String>.json(): T = body().json()
|
inline fun <reified T> HttpResponse<String>.json(): T? = body()?.json()
|
||||||
|
|
||||||
fun HttpRequest.Builder.postZ(body: String) = run {
|
fun HttpRequest.Builder.postZ(body: String) = run {
|
||||||
header("Content-Type" to "application/json")
|
header("Content-Type" to "application/json")
|
||||||
@@ -29,6 +29,6 @@ fun HttpRequest.Builder.postZ(body: String) = run {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun <T> HttpResponse<T>.header(key: String) = headers().firstValue(key).orElse(null)
|
fun <T> HttpResponse<T>.header(key: String) = headers().firstValue(key).orElse(null)
|
||||||
fun HttpResponse<ByteArray>.bodyString() = body().toString(Charsets.UTF_8)
|
fun HttpResponse<ByteArray>.bodyString() = body()?.toString(Charsets.UTF_8)
|
||||||
fun HttpResponse<ByteArray>.bodyZ() = ZLib.decompress(body()).decodeToString()
|
fun HttpResponse<ByteArray>.bodyZ() = body()?.let { ZLib.decompress(it)?.decodeToString() }
|
||||||
fun HttpResponse<ByteArray>.bodyMaybeZ() = if (header("Content-Encoding") == "deflate") bodyZ() else bodyString()
|
fun HttpResponse<ByteArray>.bodyMaybeZ() = if (header("Content-Encoding") == "deflate") bodyZ() else bodyString()
|
||||||
|
|||||||
@@ -30,8 +30,7 @@ class AllNetClient(val dns: String, val keychip: String, val game: String, val v
|
|||||||
"$dns/sys/servlet/PowerOn".request()
|
"$dns/sys/servlet/PowerOn".request()
|
||||||
.header("Content-Type" to "application/x-www-form-urlencoded")
|
.header("Content-Type" to "application/x-www-form-urlencoded")
|
||||||
.header("Pragma" to "DFI")
|
.header("Pragma" to "DFI")
|
||||||
.post(
|
.post(AllNetBillingDecoder.encodeAllNet(mapOf(
|
||||||
AllNetBillingDecoder.encodeAllNet(mapOf(
|
|
||||||
"game_id" to game,
|
"game_id" to game,
|
||||||
"ver" to version,
|
"ver" to version,
|
||||||
"serial" to keychipShort,
|
"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"
|
"encode" to "UTF-8", "format_ver" to "3", "hops" to "1", "token" to "2864179931"
|
||||||
)))
|
)))
|
||||||
.bodyString()
|
.bodyString()
|
||||||
.split("&")
|
?.split("&")
|
||||||
.map { it.split("=") }
|
?.map { it.split("=") }
|
||||||
.filter { it.size == 2 }
|
?.filter { it.size == 2 }
|
||||||
.associate { it[0] to it[1] }["uri"]
|
?.associate { it[0] to it[1] }?.get("uri")
|
||||||
?: throw Exception("PowerOn Failed: No game URL returned")
|
?: throw Exception("PowerOn Failed: No game URL returned")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ abstract class DataBroker(
|
|||||||
inline fun <reified T> String.getNullable(key: String, data: JDict): T? = "$url/$this".request()
|
inline fun <reified T> String.getNullable(key: String, data: JDict): T? = "$url/$this".request()
|
||||||
.postZ(mapper.write(data))
|
.postZ(mapper.write(data))
|
||||||
.bodyMaybeZ()
|
.bodyMaybeZ()
|
||||||
.jsonMap()[key]
|
?.jsonMaybeMap()?.get(key)
|
||||||
?.let { mapper.convert<T>(it) }
|
?.let { mapper.convert<T>(it) }
|
||||||
?.also {
|
?.also {
|
||||||
if (it is List<*>) log("✅ $this: ${it.size}")
|
if (it is List<*>) log("✅ $this: ${it.size}")
|
||||||
@@ -53,7 +53,7 @@ abstract class DataBroker(
|
|||||||
"$url/UpsertUserAllApi".request().postZ(mapper.write(mapOf(
|
"$url/UpsertUserAllApi".request().postZ(mapper.write(mapOf(
|
||||||
"userId" to allNet.userId,
|
"userId" to allNet.userId,
|
||||||
"upsertUserAll" to data.jsonMap()
|
"upsertUserAll" to data.jsonMap()
|
||||||
))).bodyMaybeZ().also { log(it) }
|
))).bodyMaybeZ()?.also { log(it) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user