From 458a67a3bd90b1107196786c7eaa3feedbe8dafe Mon Sep 17 00:00:00 2001 From: Marco Martinez Date: Thu, 16 Feb 2023 18:25:11 -0700 Subject: [PATCH 1/5] fix http error handling --- .../lib/drivers/network/JdkHttpDriver.kt | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/lib/src/main/java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt b/lib/src/main/java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt index 8a2adbd..799b54e 100644 --- a/lib/src/main/java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt +++ b/lib/src/main/java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt @@ -34,25 +34,23 @@ class JdkHttpDriver : HttpNetworkDriver { continuation.invokeOnCancellation { disconnect() } // send request body - request.body?.run { + request.body?.runCatching { doOutput = true outputStream.write(toByteArray(Charsets.UTF_8)) outputStream.flush() outputStream.close() + }?.onFailure { error -> + continuation.resumeWith(Result.failure(error)) + return@with } // read response - val response = (inputStream ?: errorStream)?.bufferedReader()?.use { - it.readText() - }?.let { responseString -> Result.success(responseString) } - ?: Result.failure(Throwable("No Response")) - - // TODO: should check response code and/or errorStream for errors -// println("URL : $url") -// println("Response Code : $responseCode") -// println("input stream : $responseString") + val responseString = when (responseCode) { + HttpURLConnection.HTTP_OK -> inputStream.bufferedReader().use { it.readText() } + else -> errorStream.bufferedReader().use { it.readText() } + } continuation.resumeWith(response) } } -} \ No newline at end of file +} From 340fe7da84c81025ec1d12e30c627adc8c0b7c49 Mon Sep 17 00:00:00 2001 From: Marco Martinez Date: Thu, 16 Feb 2023 18:35:20 -0700 Subject: [PATCH 2/5] whooooooops --- .../main/java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/main/java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt b/lib/src/main/java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt index 799b54e..c833f7f 100644 --- a/lib/src/main/java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt +++ b/lib/src/main/java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt @@ -50,7 +50,7 @@ class JdkHttpDriver : HttpNetworkDriver { else -> errorStream.bufferedReader().use { it.readText() } } - continuation.resumeWith(response) + continuation.resumeWith(Result.success(responseString)) } } } From d817fccb4a67571a64a132e3de930c24122bddb7 Mon Sep 17 00:00:00 2001 From: Marco Martinez Date: Thu, 16 Feb 2023 19:13:02 -0700 Subject: [PATCH 3/5] improvments --- .../java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/src/main/java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt b/lib/src/main/java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt index c833f7f..fa401ff 100644 --- a/lib/src/main/java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt +++ b/lib/src/main/java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt @@ -10,6 +10,7 @@ package com.metaplex.lib.drivers.network import kotlinx.coroutines.suspendCancellableCoroutine import java.net.HttpURLConnection import java.net.URL +import kotlin.coroutines.resume /** * A [HttpNetworkDriver] implementation using the native JDK [HttpURLConnection] @@ -20,7 +21,7 @@ import java.net.URL * @author Funkatronics */ class JdkHttpDriver : HttpNetworkDriver { - override suspend fun makeHttpRequest(request: HttpRequest): String = + override suspend fun makeHttpRequest(request: HttpRequest): Result = suspendCancellableCoroutine { continuation -> with(URL(request.url).openConnection() as HttpURLConnection) { @@ -40,7 +41,7 @@ class JdkHttpDriver : HttpNetworkDriver { outputStream.flush() outputStream.close() }?.onFailure { error -> - continuation.resumeWith(Result.failure(error)) + continuation.resume(error.message ?: "An unknown error occurred") return@with } @@ -50,7 +51,7 @@ class JdkHttpDriver : HttpNetworkDriver { else -> errorStream.bufferedReader().use { it.readText() } } - continuation.resumeWith(Result.success(responseString)) + continuation.resume(responseString) } } } From ae261e46473dc5faf87958bc59efcab20db76c37 Mon Sep 17 00:00:00 2001 From: Marco Martinez Date: Thu, 16 Feb 2023 19:14:41 -0700 Subject: [PATCH 4/5] wtf git --- .../main/java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/main/java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt b/lib/src/main/java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt index fa401ff..9ffffc7 100644 --- a/lib/src/main/java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt +++ b/lib/src/main/java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt @@ -21,7 +21,7 @@ import kotlin.coroutines.resume * @author Funkatronics */ class JdkHttpDriver : HttpNetworkDriver { - override suspend fun makeHttpRequest(request: HttpRequest): Result = + override suspend fun makeHttpRequest(request: HttpRequest): String = suspendCancellableCoroutine { continuation -> with(URL(request.url).openConnection() as HttpURLConnection) { From f86603f00f5e6f42c6170a63773d110b699b7e4f Mon Sep 17 00:00:00 2001 From: funkatronics Date: Thu, 16 Feb 2023 19:41:47 -0700 Subject: [PATCH 5/5] cleanup --- .../java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/src/main/java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt b/lib/src/main/java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt index 9ffffc7..d32996b 100644 --- a/lib/src/main/java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt +++ b/lib/src/main/java/com/metaplex/lib/drivers/network/JdkHttpDriver.kt @@ -41,7 +41,7 @@ class JdkHttpDriver : HttpNetworkDriver { outputStream.flush() outputStream.close() }?.onFailure { error -> - continuation.resume(error.message ?: "An unknown error occurred") + continuation.resume(error.toString()) return@with } @@ -54,4 +54,4 @@ class JdkHttpDriver : HttpNetworkDriver { continuation.resume(responseString) } } -} +} \ No newline at end of file