summaryrefslogtreecommitdiff
path: root/nexus/src/main/kotlin/tech/libeufin/nexus/Taler.kt
diff options
context:
space:
mode:
Diffstat (limited to 'nexus/src/main/kotlin/tech/libeufin/nexus/Taler.kt')
-rw-r--r--nexus/src/main/kotlin/tech/libeufin/nexus/Taler.kt73
1 files changed, 4 insertions, 69 deletions
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Taler.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/Taler.kt
index e5e13e4d..16519c46 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/Taler.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/Taler.kt
@@ -249,7 +249,9 @@ private suspend fun talerTransfer(call: ApplicationCall) {
Pain001Data(
creditorIban = creditorData.iban,
creditorBic = creditorData.bic,
- creditorName = creditorData.name,
+ creditorName = creditorData.name ?: throw NexusError(
+ HttpStatusCode.BadRequest, "Payto did not mention account owner"
+ ),
subject = transferRequest.wtid,
sum = amountObj.amount,
currency = amountObj.currency
@@ -289,69 +291,6 @@ fun roundTimestamp(t: GnunetTimestamp): GnunetTimestamp {
return GnunetTimestamp(t.t_ms - (t.t_ms % 1000))
}
-/**
- * Serve a /taler/admin/add-incoming
- */
-private suspend fun talerAddIncoming(call: ApplicationCall, httpClient: HttpClient) {
- val facadeID = expectNonNull(call.parameters["fcid"])
- call.request.requirePermission(PermissionQuery("facade", facadeID, "facade.talerWireGateway.addIncoming"))
- val addIncomingData = call.receive<TalerAdminAddIncoming>()
- val debtor = parsePayto(addIncomingData.debit_account)
- val res = transaction {
- val facadeState = getTalerFacadeState(facadeID)
- val facadeBankAccount = getTalerFacadeBankAccount(facadeID)
- return@transaction object {
- val facadeLastSeen = facadeState.highestSeenMessageSerialId
- val facadeIban = facadeBankAccount.iban
- val facadeBic = facadeBankAccount.bankCode
- val facadeHolderName = facadeBankAccount.accountHolder
- }
- }
-
- /** forward the payment information to the sandbox. */
- val response = httpClient.post<HttpResponse>(
- urlString = "http://localhost:5000/admin/payments",
- block = {
- /** FIXME: ideally Jackson should define such request body. */
- val parsedAmount = parseAmount(addIncomingData.amount)
- this.body = """{
- "creditorIban": "${res.facadeIban}",
- "creditorBic": "${res.facadeBic}",
- "creditorName": "${res.facadeHolderName}",
- "debitorIban": "${debtor.iban}",
- "debitorBic": "${debtor.bic}",
- "debitorName": "${debtor.name}",
- "amount": "${parsedAmount.amount}",
- "currency": "${parsedAmount.currency}",
- "direction": "CRDT",
- "subject": "${addIncomingData.reserve_pub}",
- "uid": "${getRandomString(8)}"
- }""".trimIndent()
- contentType(ContentType.Application.Json)
- }
- )
- if (response.status != HttpStatusCode.OK) {
- throw NexusError(
- HttpStatusCode.InternalServerError,
- "Could not forward the 'add-incoming' payment to the bank (sandbox)"
- )
- }
- return call.respond(
- TextContent(
- customConverter(
- TalerAddIncomingResponse(
- timestamp = GnunetTimestamp(
- System.currentTimeMillis()
- ),
- row_id = res.facadeLastSeen
- )
- ),
- ContentType.Application.Json
- )
- )
-}
-
-
private fun ingestOneIncomingTransaction(payment: NexusBankTransactionEntity, txDtls: TransactionDetails) {
val subject = txDtls.unstructuredRemittanceInformation
val debtorName = txDtls.debtor?.name
@@ -637,7 +576,7 @@ fun talerFacadeRoutes(route: Route, httpClient: HttpClient) {
route.get("/config") {
val facadeId = ensureNonNull(call.parameters["fcid"])
- call.request.requirePermission(PermissionQuery("facade", facadeId, "facade.talerWireGateway.addIncoming"))
+ call.request.requirePermission(PermissionQuery("facade", facadeId, "facade.talerWireGateway.config"))
call.respond(object {
val version = "0.0.0"
val name = "taler-wire-gateway"
@@ -649,10 +588,6 @@ fun talerFacadeRoutes(route: Route, httpClient: HttpClient) {
talerTransfer(call)
return@post
}
- route.post("/admin/add-incoming") {
- talerAddIncoming(call, httpClient)
- return@post
- }
route.get("/history/outgoing") {
historyOutgoing(call)
return@get