summaryrefslogtreecommitdiff
path: root/cashier/src/main/java/net/taler/cashier/HttpHelper.kt
diff options
context:
space:
mode:
authorTorsten Grote <t@grobox.de>2020-04-22 15:10:08 -0300
committerTorsten Grote <t@grobox.de>2020-04-22 15:10:08 -0300
commitd57645954dda2d478fe09dd0135183e1b3526db0 (patch)
tree3149d52c2b020844fe9031ee8b5a69cdece6e0a3 /cashier/src/main/java/net/taler/cashier/HttpHelper.kt
parentf920fa7fa12db5d6fd40844ffb8402426d0a2b07 (diff)
downloadtaler-android-d57645954dda2d478fe09dd0135183e1b3526db0.tar.gz
taler-android-d57645954dda2d478fe09dd0135183e1b3526db0.tar.bz2
taler-android-d57645954dda2d478fe09dd0135183e1b3526db0.zip
[cashier] expose internal error messages to UI
Diffstat (limited to 'cashier/src/main/java/net/taler/cashier/HttpHelper.kt')
-rw-r--r--cashier/src/main/java/net/taler/cashier/HttpHelper.kt27
1 files changed, 22 insertions, 5 deletions
diff --git a/cashier/src/main/java/net/taler/cashier/HttpHelper.kt b/cashier/src/main/java/net/taler/cashier/HttpHelper.kt
index 63eaddf..49a43d1 100644
--- a/cashier/src/main/java/net/taler/cashier/HttpHelper.kt
+++ b/cashier/src/main/java/net/taler/cashier/HttpHelper.kt
@@ -23,6 +23,8 @@ import okhttp3.MediaType
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody
+import okhttp3.Response
+import org.json.JSONException
import org.json.JSONObject
object HttpHelper {
@@ -43,14 +45,14 @@ object HttpHelper {
.execute()
} catch (e: Exception) {
Log.e(TAG, "Error retrieving $url", e)
- return HttpJsonResult.Error(500)
+ return HttpJsonResult.Error(0)
}
return if (response.code() == 200 && response.body() != null) {
val jsonObject = JSONObject(response.body()!!.string())
HttpJsonResult.Success(jsonObject)
} else {
Log.e(TAG, "Received status ${response.code()} from $url expected 200")
- HttpJsonResult.Error(response.code())
+ HttpJsonResult.Error(response.code(), getErrorBody(response))
}
}
@@ -69,14 +71,14 @@ object HttpHelper {
.execute()
} catch (e: Exception) {
Log.e(TAG, "Error retrieving $url", e)
- return HttpJsonResult.Error(500)
+ return HttpJsonResult.Error(0)
}
return if (response.code() == 200 && response.body() != null) {
val jsonObject = JSONObject(response.body()!!.string())
HttpJsonResult.Success(jsonObject)
} else {
Log.e(TAG, "Received status ${response.code()} from $url expected 200")
- HttpJsonResult.Error(response.code())
+ HttpJsonResult.Error(response.code(), getErrorBody(response))
}
}
@@ -94,9 +96,24 @@ object HttpHelper {
.build()
}.build()
+ private fun getErrorBody(response: Response): String? {
+ val body = response.body()?.string() ?: return null
+ Log.e(TAG, "Response body: $body")
+ return try {
+ val json = JSONObject(body)
+ "${json.optString("ec")} ${json.optString("error")}"
+ } catch (e: JSONException) {
+ null
+ }
+ }
+
}
sealed class HttpJsonResult {
- class Error(val statusCode: Int) : HttpJsonResult()
+ class Error(val statusCode: Int, private val errorMsg: String? = null) : HttpJsonResult() {
+ val msg: String
+ get() = errorMsg?.let { "\n\n$statusCode $it" } ?: ": $statusCode"
+ }
+
class Success(val json: JSONObject) : HttpJsonResult()
}