|
1 | 1 | package com.statsig.sdk
|
2 | 2 |
|
| 3 | +import okhttp3.MediaType.Companion.toMediaType |
| 4 | +import okhttp3.OkHttpClient |
| 5 | +import okhttp3.Request |
| 6 | +import okhttp3.RequestBody.Companion.toRequestBody |
3 | 7 | import java.net.URI
|
4 |
| -import java.net.http.HttpClient |
5 |
| -import java.net.http.HttpRequest |
6 |
| -import java.net.http.HttpResponse |
7 | 8 |
|
8 | 9 | internal class ErrorBoundary(private val apiKey: String) {
|
9 | 10 | internal var uri = URI("https://statsigapi.net/v1/sdk_exception")
|
10 | 11 | internal val seen = HashSet<String>()
|
11 | 12 |
|
| 13 | + private val client = OkHttpClient() |
| 14 | + private companion object { |
| 15 | + val MEDIA_TYPE = "application/json; charset=utf-8".toMediaType() |
| 16 | + } |
| 17 | + |
12 | 18 | fun <T> swallowSync(task: () -> T) {
|
13 | 19 | try {
|
14 | 20 | task()
|
@@ -40,26 +46,28 @@ internal class ErrorBoundary(private val apiKey: String) {
|
40 | 46 |
|
41 | 47 | seen.add(ex.javaClass.name)
|
42 | 48 |
|
43 |
| - val body = """ |
44 |
| - { |
| 49 | + val body = """{ |
45 | 50 | "exception": "${ex.javaClass.name}",
|
46 | 51 | "info": "${ex.stackTraceToString()}",
|
47 | 52 | "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() |
55 | 62 | } catch (_: Throwable) {
|
56 | 63 | // no-op
|
57 | 64 | }
|
58 | 65 | }
|
59 | 66 |
|
60 | 67 | private fun onException(ex: Throwable) {
|
61 | 68 | if (ex is StatsigIllegalStateException
|
62 |
| - || ex is StatsigUninitializedException) { |
| 69 | + || ex is StatsigUninitializedException |
| 70 | + ) { |
63 | 71 | throw ex;
|
64 | 72 | }
|
65 | 73 |
|
|
0 commit comments