[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libeufin] 04/04: input amounts
From: |
gnunet |
Subject: |
[libeufin] 04/04: input amounts |
Date: |
Thu, 16 Jun 2022 12:05:16 +0200 |
This is an automated email from the git hooks/post-receive script.
ms pushed a commit to branch master
in repository libeufin.
commit 8d4919c1043f980698cc1b2b43446594f74ddfd8
Author: MS <ms@taler.net>
AuthorDate: Thu Jun 16 12:03:17 2022 +0200
input amounts
only validate amounts as strings, without parsing
them into a number type.
---
.../tech/libeufin/sandbox/EbicsProtocolBackend.kt | 17 +++++++++++++----
sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt | 3 ++-
2 files changed, 15 insertions(+), 5 deletions(-)
diff --git
a/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
b/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
index 97789737..4ec3af1b 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
@@ -58,7 +58,7 @@ data class PainParseResult(
val debtorName: String,
val debtorBic: String?,
val subject: String,
- val amount: Amount,
+ val amount: String,
val currency: String,
val pmtInfId: String,
val msgId: String
@@ -663,9 +663,14 @@ private fun parsePain001(paymentRequest: String):
PainParseResult {
}
}
+ if (!validatePlainAmount(txDetails.amt.textContent)) {
+ throw EbicsProcessingError(
+ "Amount number malformed:
${txDetails.amt.textContent}"
+ )
+ }
PainParseResult(
currency = txDetails.amt.getAttribute("Ccy"),
- amount = Amount(txDetails.amt.textContent),
+ amount = txDetails.amt.textContent,
subject = txDetails.subject,
debtorIban = debtorIban,
debtorName = debtorName,
@@ -692,6 +697,10 @@ private fun handleCct(paymentRequest: String) {
transaction {
try {
val bankAccount = getBankAccountFromIban(parseResult.debtorIban)
+ if (parseResult.currency != bankAccount.demoBank.currency) throw
EbicsRequestError(
+ "[EBICS_PROCESSING_ERROR] Currency (${parseResult.currency})
not supported.",
+ "091116"
+ )
BankAccountTransactionEntity.new {
account = bankAccount
demobank = bankAccount.demoBank
@@ -702,7 +711,7 @@ private fun handleCct(paymentRequest: String) {
debtorName = parseResult.debtorName
debtorBic = parseResult.debtorBic
subject = parseResult.subject
- amount = parseResult.amount.toString()
+ amount = parseResult.amount
currency = parseResult.currency
date = getUTCnow().toInstant().toEpochMilli()
pmtInfId = parseResult.pmtInfId
@@ -723,7 +732,7 @@ private fun handleCct(paymentRequest: String) {
debtorName = parseResult.debtorName
debtorBic = parseResult.debtorBic
subject = parseResult.subject
- amount = parseResult.amount.toString()
+ amount = parseResult.amount
currency = parseResult.currency
date = getUTCnow().toInstant().toEpochMilli()
pmtInfId = parseResult.pmtInfId
diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt
b/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt
index 2147ca57..67c8b371 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt
@@ -1191,6 +1191,7 @@ val sandboxApp: Application.() -> Unit = {
* return a pair, consisting of the bank account and the
demobank
* hosting it.
*/
+ if (!validatePlainAmount(amount)) throw
badRequest("Invalid amount: $amount")
transaction {
wireTransfer(
debitAccount = bankAccount,
@@ -1199,7 +1200,7 @@ val sandboxApp: Application.() -> Unit = {
subject = payto.message ?: throw badRequest(
"'message' query parameter missing in Payto
address"
),
- amount = parseAmount(amount).amount.toPlainString()
+ amount = amount
)
}
call.respond(object {})
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.