SDKs

Kotlin

Android と JVM のための Kotlin イディオムなパターン

JVM/Android では OkHttp + kotlinx.serialization を、コルーチンファーストな書き味なら Ktor を使います。以下では OkHttp を使います。

Gradle

dependencies {
    implementation("com.squareup.okhttp3:okhttp:4.12.0")
    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3")
}

Configure

import okhttp3.*
import kotlinx.serialization.json.Json

private const val API = "https://openapi.thunderbit.com/openapi/v1"
private val JSON_MEDIA = "application/json".toMediaType()
private val client = OkHttpClient()

private fun request(path: String) = Request.Builder()
    .url("$API$path")
    .header("Authorization", "Bearer ${System.getenv("THUNDERBIT_API_KEY")}")

ページを Distill する

val body = """{"url": "https://thunderbit.com/playground"}"""
    .toRequestBody(JSON_MEDIA)

client.newCall(request("/distill").post(body).build()).execute().use { res ->
    if (!res.isSuccessful) error("HTTP ${'$'}{res.code}")
    println(res.body!!.string())
}

構造化データを Extract する

val body = """
{
  "url": "https://example.com/product/iphone-15-pro",
  "schema": {
    "type": "object",
    "properties": {
      "name":  { "type": "string" },
      "price": { "type": "number" }
    },
    "required": ["name", "price"]
  }
}
""".trimIndent().toRequestBody(JSON_MEDIA)

val res = client.newCall(request("/extract").post(body).build()).execute()

Coroutines + Batch

Android の UI スレッドから呼ぶときは withContext(Dispatchers.IO) でラップするか、Ktor の suspend クライアントを使ってください。Batch ジョブは投入後に Webhook ハンドラ側で受けるのが定石です —— Webhooks を参照。

公式 Kotlin SDK は開発中です —— もう少しお待ちください。