From 866f9272efea0472e88789fa8bed00fb5deb398d Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sun, 5 Mar 2023 07:14:56 +0200 Subject: [PATCH] Fix handling sync server errors --- .../koitharu/kotatsu/sync/domain/SyncHelper.kt | 2 +- .../org/koitharu/kotatsu/utils/ext/HttpExt.kt | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/sync/domain/SyncHelper.kt b/app/src/main/java/org/koitharu/kotatsu/sync/domain/SyncHelper.kt index 71d4925d8..79d8a1d90 100644 --- a/app/src/main/java/org/koitharu/kotatsu/sync/domain/SyncHelper.kt +++ b/app/src/main/java/org/koitharu/kotatsu/sync/domain/SyncHelper.kt @@ -269,4 +269,4 @@ class SyncHelper( private fun JSONObject.removeJSONObject(name: String) = remove(name) as JSONObject private fun JSONObject.removeJSONArray(name: String) = remove(name) as JSONArray -} \ No newline at end of file +} diff --git a/app/src/main/java/org/koitharu/kotatsu/utils/ext/HttpExt.kt b/app/src/main/java/org/koitharu/kotatsu/utils/ext/HttpExt.kt index a78792727..a38596cb0 100644 --- a/app/src/main/java/org/koitharu/kotatsu/utils/ext/HttpExt.kt +++ b/app/src/main/java/org/koitharu/kotatsu/utils/ext/HttpExt.kt @@ -3,8 +3,9 @@ package org.koitharu.kotatsu.utils.ext import okhttp3.MediaType.Companion.toMediaType import okhttp3.RequestBody.Companion.toRequestBody import okhttp3.Response +import okhttp3.internal.closeQuietly +import okio.IOException import org.json.JSONObject -import org.koitharu.kotatsu.parsers.util.parseJson import java.net.HttpURLConnection private val TYPE_JSON = "application/json".toMediaType() @@ -12,9 +13,13 @@ private val TYPE_JSON = "application/json".toMediaType() fun JSONObject.toRequestBody() = toString().toRequestBody(TYPE_JSON) fun Response.parseJsonOrNull(): JSONObject? { - return if (code == HttpURLConnection.HTTP_NO_CONTENT) { - null - } else { - parseJson() + return try { + when { + !isSuccessful -> throw IOException(body?.string()) + code == HttpURLConnection.HTTP_NO_CONTENT -> null + else -> JSONObject(body?.string() ?: return null) + } + } finally { + closeQuietly() } }