Bernhard
02/26/2026, 12:54 PMhfhbd
02/26/2026, 1:01 PMpublic suspend fun HttpClient.bazA(
input: FooInput,
X_CSRF_Token: String,
B: String? = null,
builder: suspend HttpRequestBuilder.() -> Unit = {},
): BazAResult {
https://github.com/hfhbd/kfx/blob/main/openapi-fir/src/a/kotlin/client/bazA.kt
and for setup:
fun <T : HttpClientEngineConfig> HttpClientConfig<T>.setupJiraClient() {
expectSuccess = true
install(ContentNegotiation) {
setupJiraJson()
}
}
fun Configuration.setupJiraJson() {
jsonIo(
Json {
useAlternativeNames = false
ignoreUnknownKeys = true
},
)
}Bernhard
02/26/2026, 1:03 PMBernhard
02/26/2026, 1:03 PM@JsExport
class ProductClient(
private val configuration: Configuration,
) {
private val tenant = configuration.tenant
suspend fun createProduct(
product: CreateProduct,
token: String,
skipVariantGeneration: Boolean = false,
doIndex: Boolean = false,
contentLanguage: String? = null,
) {
val result = <http://client.post|client.post>(configuration.endpoint) {
url {
appendPathSegments("product", tenant, "products")
parameters {
if (doIndex) {
append("doIndex", "true")
}
if (skipVariantGeneration) {
append("skipVariantGeneration", "true")
}
}
}
contentType(ContentType.Application.Json)
headers {
contentLanguage?.let {
append(HttpHeaders.ContentLanguage, it)
}
bearerAuth(token)
setBody(product)
}
}
}
}Bernhard
02/26/2026, 1:04 PMBernhard
02/26/2026, 1:05 PMBernhard
02/26/2026, 1:14 PMBernhard
02/26/2026, 1:15 PM@JsExport
class ProductApi(private val config: ApiConfiguration): IProductClient by ProductClient(Configuration(
client = HttpClient {
install(ContentNegotiation) {
json(Json {
explicitNulls = false
})
}
},
endpoint = config.endpoint,
tenant = config.tenant,
))
@JsPlainObject
external interface ApiConfiguration {
val endpoint: String
val tenant: String
}Bernhard
02/26/2026, 1:15 PM