Skip to content

Commit 93e37dc

Browse files
committed
feat: wrap NetworkUnknown error in a SettingsFail Error.
1 parent 369dbce commit 93e37dc

File tree

1 file changed

+20
-16
lines changed
  • core/src/main/java/com/segment/analytics/kotlin/core

1 file changed

+20
-16
lines changed

core/src/main/java/com/segment/analytics/kotlin/core/Settings.kt

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@ package com.segment.analytics.kotlin.core
22

33
import com.segment.analytics.kotlin.core.platform.DestinationPlugin
44
import com.segment.analytics.kotlin.core.platform.Plugin
5-
import com.segment.analytics.kotlin.core.platform.plugins.logger.LogKind
65
import com.segment.analytics.kotlin.core.platform.plugins.logger.log
7-
import com.segment.analytics.kotlin.core.platform.plugins.logger.segmentLog
86
import com.segment.analytics.kotlin.core.utilities.LenientJson
97
import com.segment.analytics.kotlin.core.utilities.safeJsonObject
108
import kotlinx.coroutines.launch
@@ -15,6 +13,7 @@ import kotlinx.serialization.json.Json
1513
import kotlinx.serialization.json.JsonObject
1614
import kotlinx.serialization.serializer
1715
import java.io.BufferedReader
16+
import java.net.URL
1817

1918
@Serializable
2019
data class Settings(
@@ -109,17 +108,22 @@ internal fun Analytics.fetchSettings(
109108
writeKey: String,
110109
cdnHost: String
111110
): Settings? = try {
112-
val connection = HTTPClient(writeKey, this.configuration.requestFactory).settings(cdnHost)
113-
val settingsString =
114-
connection.inputStream?.bufferedReader()?.use(BufferedReader::readText) ?: ""
115-
log("Fetched Settings: $settingsString")
116-
LenientJson.decodeFromString(settingsString)
117-
} catch (ex: Exception) {
118-
reportErrorWithMetrics(this, AnalyticsError.SettingsFetchError(ex.message, ex), "Failed to fetch settings",
119-
Telemetry.INVOKE_ERROR_METRIC, ex.stackTraceToString()) {
120-
it["error"] = ex.toString()
121-
it["writekey"] = writeKey
122-
it["message"] = "Error retrieving settings"
123-
}
124-
configuration.defaultSettings
125-
}
111+
val connection = HTTPClient(writeKey, this.configuration.requestFactory).settings(cdnHost)
112+
val settingsString =
113+
connection.inputStream?.bufferedReader()?.use(BufferedReader::readText) ?: ""
114+
log("Fetched Settings: $settingsString")
115+
LenientJson.decodeFromString(settingsString)
116+
} catch (ex: Exception) {
117+
reportErrorWithMetrics(
118+
this,
119+
AnalyticsError.SettingsFail(AnalyticsError.NetworkUnknown(URL("https://$cdnHost/projects/$writeKey/settings"), ex)),
120+
"Failed to fetch settings",
121+
Telemetry.INVOKE_ERROR_METRIC,
122+
ex.stackTraceToString()
123+
) {
124+
it["error"] = ex.toString()
125+
it["writekey"] = writeKey
126+
it["message"] = "Error retrieving settings"
127+
}
128+
configuration.defaultSettings
129+
}

0 commit comments

Comments
 (0)