From 192326f68d0aea1f6c0eaddb293a0daa6b18e6c6 Mon Sep 17 00:00:00 2001 From: Jeremy Klein Date: Tue, 10 Sep 2024 13:24:50 -0700 Subject: [PATCH] Add the uma-configuration file to the demo VASP --- .../kotlin/com/lightspark/plugins/Routing.kt | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/umaserverdemo/src/main/kotlin/com/lightspark/plugins/Routing.kt b/umaserverdemo/src/main/kotlin/com/lightspark/plugins/Routing.kt index 0d2e40e1..6d8954ac 100644 --- a/umaserverdemo/src/main/kotlin/com/lightspark/plugins/Routing.kt +++ b/umaserverdemo/src/main/kotlin/com/lightspark/plugins/Routing.kt @@ -5,6 +5,8 @@ import com.lightspark.Vasp1 import com.lightspark.Vasp2 import com.lightspark.debugLog import com.lightspark.handlePubKeyRequest +import com.lightspark.isDomainLocalhost +import com.lightspark.originWithPort import com.lightspark.registerVasp1Routes import com.lightspark.registerVasp2Routes import com.lightspark.sdk.ClientConfig @@ -25,6 +27,11 @@ import kotlinx.serialization.json.JsonObject import me.uma.InMemoryNonceCache import me.uma.InMemoryPublicKeyCache import me.uma.UmaProtocolHelper +import kotlinx.serialization.json.JsonArray +import kotlinx.serialization.json.add +import kotlinx.serialization.json.buildJsonArray +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.put fun Application.configureRouting( config: UmaConfig, @@ -48,6 +55,24 @@ fun Application.configureRouting( call.debugLog(handlePubKeyRequest(call, config)) } + get("/.well-known/uma-configuration") { + val domain = config.vaspDomain ?: call.originWithPort() + val scheme = if (isDomainLocalhost(domain)) "http" else "https" + call.respond( + HttpStatusCode.OK, + buildJsonObject { + put("uma_request_endpoint", "$scheme://$domain/api/uma/request_pay_invoice") + put( + "uma_major_versions", + buildJsonArray { + add(0) + add(1) + }, + ) + }, + ) + } + post("/api/uma/utxoCallback") { val postTransactionCallback = try { uma.parseAsPostTransactionCallback(call.receiveText())