Skip to content

Commit 4dee2de

Browse files
committed
ECWID-144513 new eager responseBody isJsonObject check
1 parent 73e3256 commit 4dee2de

1 file changed

Lines changed: 12 additions & 1 deletion

File tree

src/main/kotlin/com/ecwid/apiclient/v3/ApiClientHelper.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ import com.ecwid.apiclient.v3.responsefields.responseFieldsOf
2323
import com.ecwid.apiclient.v3.util.buildEndpointPath
2424
import com.ecwid.apiclient.v3.util.createSecurePatterns
2525
import com.ecwid.apiclient.v3.util.maskLogString
26+
import com.google.gson.JsonObject
27+
import com.google.gson.JsonParser
28+
import com.google.gson.JsonSyntaxException
2629
import java.net.URI
2730
import java.util.*
2831
import java.util.logging.Level
@@ -197,7 +200,7 @@ class ApiClientHelper private constructor(
197200
val responseBody = responseBytes.asString()
198201
logErrorResponseIfNeeded(requestId, requestTime, httpResponse.statusCode, responseBody)
199202
// Because of a html-based balancer error we should check responseBody string to be an actual json object
200-
val ecwidError = if (responseBody.isNotBlank() && responseBody.startsWith("{")) {
203+
val ecwidError = if (responseBody.isNotBlank() && isJsonObject(responseBody)) {
201204
jsonTransformer.deserialize(responseBody, EcwidApiError::class.java)
202205
} else {
203206
null
@@ -554,3 +557,11 @@ private fun createAdditionalDataPolymorphicType(): PolymorphicType<FetchedReport
554557
)
555558
)
556559
}
560+
561+
private fun isJsonObject(input: String): Boolean {
562+
return try {
563+
JsonParser.parseString(input).isJsonObject
564+
} catch (_: JsonSyntaxException) {
565+
return false
566+
}
567+
}

0 commit comments

Comments
 (0)