From 42348476f6441000df5da1ca6126ec27691b054b Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Wed, 26 Feb 2020 15:23:10 -0800 Subject: [PATCH] Reduced complexity. --- .../kotlin/net/thauvin/erik/bitly/Bitlinks.kt | 9 ++-- .../kotlin/net/thauvin/erik/bitly/Utils.kt | 52 +++++++++++-------- 2 files changed, 36 insertions(+), 25 deletions(-) diff --git a/src/main/kotlin/net/thauvin/erik/bitly/Bitlinks.kt b/src/main/kotlin/net/thauvin/erik/bitly/Bitlinks.kt index 2488979..7940b40 100644 --- a/src/main/kotlin/net/thauvin/erik/bitly/Bitlinks.kt +++ b/src/main/kotlin/net/thauvin/erik/bitly/Bitlinks.kt @@ -114,17 +114,18 @@ class Bitlinks(private val accessToken: String) { } private fun parseJsonResponse(response: String, key: String, default: String, isJson: Boolean): String { + var parsed = default if (response.isNotEmpty()) { if (isJson) { - return response + parsed = response } else { try { - return JSONObject(response).getString(key, default) + parsed = JSONObject(response).getString(key, default) } catch (jse: JSONException) { - Utils.logger.log(Level.SEVERE, "An error occurred parsing the response from bitly.", jse) + Utils.logger.log(Level.SEVERE, "An error occurred parsing the response from Bitly.", jse) } } } - return default + return parsed } } diff --git a/src/main/kotlin/net/thauvin/erik/bitly/Utils.kt b/src/main/kotlin/net/thauvin/erik/bitly/Utils.kt index f824896..02c3ee2 100644 --- a/src/main/kotlin/net/thauvin/erik/bitly/Utils.kt +++ b/src/main/kotlin/net/thauvin/erik/bitly/Utils.kt @@ -37,6 +37,7 @@ import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.RequestBody.Companion.toRequestBody +import okhttp3.Response import okhttp3.logging.HttpLoggingInterceptor import org.json.JSONException import org.json.JSONObject @@ -118,36 +119,45 @@ class Utils private constructor() { }.addHeader("Authorization", "Bearer $accessToken") val result = client.newCall(builder.build()).execute() - - val body = result.body?.string() - if (body != null) { - if (!result.isSuccessful && body.isNotEmpty()) { - logApiError(body, result.code) - } - response = body - } + response = parseBody(endPoint, result) } } - return response } - private fun logApiError(body: String, resultCode: Int) { - try { - with(JSONObject(body)) { - if (has("message")) { - logger.severe(getString("message") + " ($resultCode)") - } - if (has("description")) { - val description = getString("description") - if (description.isNotBlank()) { - logger.severe(description) + private fun parseBody(endPoint: String, result: Response): String { + val body = result.body?.string() + if (body != null) { + if (!result.isSuccessful && body.isNotEmpty()) { + try { + with(JSONObject(body)) { + if (has("message")) { + logger.severe(getString("message") + " (${result.code})") + } + if (has("description")) { + logger.severe(getString("description")) + } } + } catch (jse: JSONException) { + logger.log( + Level.SEVERE, + "An error occurred parsing the error response from Bitly. [$endPoint]", + jse + ) } } - } catch (jse: JSONException) { - logger.log(Level.SEVERE, "An error occurred parsing the error response from bitly.", jse) + return body } + return Constants.EMPTY + } + + private fun validateCall(accessToken: String, endPoint: String): Boolean { + when { + endPoint.isBlank() -> logger.severe("Please specify a valid API endpoint.") + accessToken.isBlank() -> logger.severe("Please specify a valid API access token.") + else -> return true + } + return false } /**