Skip to content

Commit bc21cae

Browse files
Http -> OkHttp for ErrorBoundary (#86)
* Http -> OkHttp for ErrorBoundary * Add SDK info to Headers
1 parent a43b961 commit bc21cae

File tree

2 files changed

+23
-13
lines changed

2 files changed

+23
-13
lines changed

src/main/kotlin/com/statsig/sdk/ErrorBoundary.kt

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
package com.statsig.sdk
22

3+
import okhttp3.MediaType.Companion.toMediaType
4+
import okhttp3.OkHttpClient
5+
import okhttp3.Request
6+
import okhttp3.RequestBody.Companion.toRequestBody
37
import java.net.URI
4-
import java.net.http.HttpClient
5-
import java.net.http.HttpRequest
6-
import java.net.http.HttpResponse
78

89
internal class ErrorBoundary(private val apiKey: String) {
910
internal var uri = URI("https://statsigapi.net/v1/sdk_exception")
1011
internal val seen = HashSet<String>()
1112

13+
private val client = OkHttpClient()
14+
private companion object {
15+
val MEDIA_TYPE = "application/json; charset=utf-8".toMediaType()
16+
}
17+
1218
fun <T> swallowSync(task: () -> T) {
1319
try {
1420
task()
@@ -40,26 +46,28 @@ internal class ErrorBoundary(private val apiKey: String) {
4046

4147
seen.add(ex.javaClass.name)
4248

43-
val body = """
44-
{
49+
val body = """{
4550
"exception": "${ex.javaClass.name}",
4651
"info": "${ex.stackTraceToString()}",
4752
"statsigMetadata": ${StatsigMetadata.asJson()}
48-
}
49-
""".trimIndent()
50-
val client = HttpClient.newBuilder().build()
51-
val req = HttpRequest.newBuilder(uri)
52-
.POST(HttpRequest.BodyPublishers.ofString(body))
53-
.header("STATSIG-API-KEY", apiKey).build()
54-
client.send(req, HttpResponse.BodyHandlers.ofString())
53+
}""".trimIndent()
54+
val req =
55+
Request.Builder()
56+
.url(uri.toString())
57+
.header("STATSIG-API-KEY", apiKey)
58+
.post(body.toRequestBody(MEDIA_TYPE))
59+
.build()
60+
61+
client.newCall(req).execute()
5562
} catch (_: Throwable) {
5663
// no-op
5764
}
5865
}
5966

6067
private fun onException(ex: Throwable) {
6168
if (ex is StatsigIllegalStateException
62-
|| ex is StatsigUninitializedException) {
69+
|| ex is StatsigUninitializedException
70+
) {
6371
throw ex;
6472
}
6573

src/main/kotlin/com/statsig/sdk/StatsigNetwork.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ internal class StatsigNetwork(
5858
.addHeader("STATSIG-API-KEY", sdkKey)
5959
.addHeader("STATSIG-CLIENT-TIME", System.currentTimeMillis().toString())
6060
.addHeader("STATSIG-SERVER-SESSION-ID", serverSessionID)
61+
.addHeader("STATSIG-SDK-TYPE", statsigMetadata["sdkType"] ?: "")
62+
.addHeader("STATSIG-SDK-VERSION", statsigMetadata["sdkVersion"] ?: "")
6163
.method(original.method, original.body)
6264
.build()
6365
it.proceed(request)

0 commit comments

Comments
 (0)