[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libeufin] branch master updated: Extract data from CAMT.053 returned by
From: |
gnunet |
Subject: |
[libeufin] branch master updated: Extract data from CAMT.053 returned by the bank. |
Date: |
Thu, 26 Mar 2020 10:38:16 +0100 |
This is an automated email from the git hooks/post-receive script.
marcello pushed a commit to branch master
in repository libeufin.
The following commit(s) were added to refs/heads/master by this push:
new 3b548a6 Extract data from CAMT.053 returned by the bank.
3b548a6 is described below
commit 3b548a61b61f3308cff2d54b20edb5636a354a98
Author: Marcello Stanisci <address@hidden>
AuthorDate: Thu Mar 26 10:37:30 2020 +0100
Extract data from CAMT.053 returned by the bank.
---
nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt | 1 +
nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt | 38 ++++++++++++++++++++---
util/src/main/kotlin/zip.kt | 6 ++--
3 files changed, 38 insertions(+), 7 deletions(-)
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt
b/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt
index c0552ac..2013351 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt
@@ -18,6 +18,7 @@ object EbicsRawBankTransactionsTable : IdTable<Long>() {
val nexusSubscriber = reference("subscriber", EbicsSubscribersTable)
// How did we learn about this transaction? C52 / C53 / C54
val sourceType = text("sourceType")
+ // Name of the ZIP entry
val sourceFileName = text("sourceFileName")
// "Subject" of the SEPA transaction
val unstructuredRemittanceInformation =
text("unstructuredRemittanceInformation")
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
b/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
index 010fbfb..ea7134d 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
@@ -643,11 +643,39 @@ fun main() {
* at all.
*/
response.orderData.unzipWithLoop {
- // parse the camt.053 here, and persist into
database.
- val camt53doc = XMLUtil.parseStringIntoDom(it)
- val creditorIban =
XMLUtil.getStringViaXpath(camt53doc, "//CdtrAcct/Id/IBAN")
- val creditOrDebit =
XMLUtil.getStringViaXpath(camt53doc, "//Ntry/CdtDbtInd")
- logger.debug("Creditor IBAN: $creditorIban,
credit-or-debit: $creditOrDebit")
+ val fileName = it.first
+ val camt53doc =
XMLUtil.parseStringIntoDom(it.second)
+ val creditorIban = XMLUtil.getStringFromXpath(
+ camt53doc,
+
"//*[local-name()='CdtrAcct']//*[local-name()='IBAN']"
+ )
+ val debitorIban = XMLUtil.getStringFromXpath(
+ camt53doc,
+
"//*[local-name()='DbtrAcct']//*[local-name()='IBAN']"
+ )
+ val creditOrDebit = XMLUtil.getStringFromXpath(
+ camt53doc,
+
"//*[local-name()='Ntry']//*[local-name()='CdtDbtInd']"
+ )
+ val amount = XMLUtil.getNodeFromXpath(
+ camt53doc,
+
"//*[local-name()='Ntry']//*[local-name()='Amt']"
+ )
+ val subject = XMLUtil.getStringFromXpath(
+ camt53doc,
+
"//*[local-name()='RmtInf']//*[local-name()='Ustrd']"
+ )
+ val currency =
amount?.attributes?.getNamedItem("Ccy")?.nodeValue
+
+ println(
+ "####" +
+ "\n\tCreditor IBAN: $creditorIban," +
+ "\n\tDebitor IBAN: $debitorIban," +
+ "\n\tCurrency: $currency," +
+ "\n\tAmount:
${amount?.firstChild?.nodeValue}" +
+ "\n\tSubject: $subject," +
+ "\n\tFile name: $fileName"
+ )
}
call.respondText(
"C53 data persisted into the database (WIP).",
diff --git a/util/src/main/kotlin/zip.kt b/util/src/main/kotlin/zip.kt
index 0c6d739..e64d81b 100644
--- a/util/src/main/kotlin/zip.kt
+++ b/util/src/main/kotlin/zip.kt
@@ -37,10 +37,12 @@ fun ByteArray.prettyPrintUnzip(): String {
return s.toString()
}
-fun ByteArray.unzipWithLoop(process: (String) -> Unit) {
+fun ByteArray.unzipWithLoop(process: (Pair<String, String>) -> Unit) {
val mem = SeekableInMemoryByteChannel(this)
val zipFile = ZipFile(mem)
zipFile.getEntriesInPhysicalOrder().iterator().forEach {
-
process(zipFile.getInputStream(it).readAllBytes().toString(Charsets.UTF_8))
+ process(
+ Pair(it.name,
zipFile.getInputStream(it).readAllBytes().toString(Charsets.UTF_8))
+ )
}
}
\ No newline at end of file
--
To stop receiving notification emails like this one, please contact
address@hidden.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [libeufin] branch master updated: Extract data from CAMT.053 returned by the bank.,
gnunet <=