gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[libeufin] branch master updated: fix HEV


From: gnunet
Subject: [libeufin] branch master updated: fix HEV
Date: Sun, 24 May 2020 14:00:48 +0200

This is an automated email from the git hooks/post-receive script.

dold pushed a commit to branch master
in repository libeufin.

The following commit(s) were added to refs/heads/master by this push:
     new 8f42737  fix HEV
8f42737 is described below

commit 8f42737140df0f8bc57b7de3774ffe5fdcc09ced
Author: Florian Dold <address@hidden>
AuthorDate: Sun May 24 17:30:43 2020 +0530

    fix HEV
---
 nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt | 42 ++++++++++++++++++++++-
 util/src/main/kotlin/Ebics.kt                     | 23 +++++++++----
 2 files changed, 58 insertions(+), 7 deletions(-)

diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt 
b/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
index 74559ef..17074d7 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
@@ -22,6 +22,7 @@ package tech.libeufin.nexus
 import com.fasterxml.jackson.core.util.DefaultIndenter
 import com.fasterxml.jackson.core.util.DefaultPrettyPrinter
 import com.fasterxml.jackson.databind.JsonNode
+import com.fasterxml.jackson.databind.ObjectMapper
 import com.fasterxml.jackson.databind.SerializationFeature
 import com.fasterxml.jackson.databind.exc.MismatchedInputException
 import com.fasterxml.jackson.module.kotlin.KotlinModule
@@ -627,7 +628,33 @@ fun serverMain() {
                 call.respond(BankConnectionsList(connList))
             }
 
-            post("/bank-connections/{connid}/backup") {
+            get("/bank-connections/{connid}") {
+                val resp = transaction {
+                    val user = authenticateRequest(call.request)
+                    val conn = requireBankConnection(call, "connid")
+                    if (conn.type != "ebics") {
+                        throw NexusError(
+                            HttpStatusCode.BadRequest,
+                            "bank connection is not of type 'ebics' (but 
'${conn.type}')"
+                        )
+                    }
+                    val ebicsSubscriber = 
getEbicsSubscriberDetails(user.id.value, conn.id.value)
+                    val mapper = ObjectMapper()
+                    val details = mapper.createObjectNode()
+                    details.put("ebicsUrl", ebicsSubscriber.ebicsUrl)
+                    details.put("ebicsHostId", ebicsSubscriber.hostId)
+                    details.put("partnerId", ebicsSubscriber.partnerId)
+                    details.put("userId", ebicsSubscriber.userId)
+                    val node = mapper.createObjectNode()
+                    node.put("type", conn.type)
+                    node.put("owner", conn.owner.id.value)
+                    node.set<JsonNode>("details", details)
+                    node
+                }
+                call.respond(resp)
+            }
+
+            post("/bank-connections/{connid}/export-backup") {
                 throw NotImplementedError()
             }
 
@@ -664,6 +691,19 @@ fun serverMain() {
                 call.respond(resp)
             }
 
+            post("/bank-connections/{connid}/ebics/send-hev") {
+                val subscriber = transaction {
+                    val user = authenticateRequest(call.request)
+                    val conn = requireBankConnection(call, "connid")
+                    if (conn.type != "ebics") {
+                        throw NexusError(HttpStatusCode.BadRequest, "bank 
connection is not of type 'ebics'")
+                    }
+                    getEbicsSubscriberDetails(user.id.value, conn.id.value)
+                }
+                val resp = doEbicsHostVersionQuery(client, 
subscriber.ebicsUrl, subscriber.hostId)
+                call.respond(resp)
+            }
+
             post("/bank-connections/{connid}/ebics/send-hpb") {
                 val subscriberDetails = transaction {
                     val user = authenticateRequest(call.request)
diff --git a/util/src/main/kotlin/Ebics.kt b/util/src/main/kotlin/Ebics.kt
index 589edbc..0f62082 100644
--- a/util/src/main/kotlin/Ebics.kt
+++ b/util/src/main/kotlin/Ebics.kt
@@ -237,8 +237,14 @@ fun createEbicsRequestForDownloadInitialization(
         subscriberDetails.hostId,
         getNonce(128),
         
DatatypeFactory.newInstance().newXMLGregorianCalendar(GregorianCalendar()),
-        subscriberDetails.bankEncPub ?: throw 
UtilError(HttpStatusCode.BadRequest, "Invalid subscriber state 'bankEncPub' 
missing, please send HPB first"),
-        subscriberDetails.bankAuthPub ?: throw 
UtilError(HttpStatusCode.BadRequest, "Invalid subscriber state 'bankAuthPub' 
missing, please send HPB first"),
+        subscriberDetails.bankEncPub ?: throw UtilError(
+            HttpStatusCode.BadRequest,
+            "Invalid subscriber state 'bankEncPub' missing, please send HPB 
first"
+        ),
+        subscriberDetails.bankAuthPub ?: throw UtilError(
+            HttpStatusCode.BadRequest,
+            "Invalid subscriber state 'bankAuthPub' missing, please send HPB 
first"
+        ),
         orderType,
         makeOrderParams(orderParams)
     )
@@ -296,13 +302,14 @@ enum class EbicsReturnCode(val errorCode: String) {
     EBICS_DOWNLOAD_POSTPROCESS_DONE("011000"),
     EBICS_DOWNLOAD_POSTPROCESS_SKIPPED("011001"),
     EBICS_TX_SEGMENT_NUMBER_UNDERRUN("011101"),
+    EBICS_INVALID_USER_OR_USER_STATE("091002"),
     EBICS_NO_DOWNLOAD_DATA_AVAILABLE("090005");
 
     companion object {
         fun lookup(errorCode: String): EbicsReturnCode {
             for (x in values()) {
                 if (x.errorCode == errorCode) {
-                    return x;
+                    return x
                 }
             }
             throw UtilError(HttpStatusCode.InternalServerError, "Unknown EBICS 
status code: $errorCode")
@@ -395,7 +402,10 @@ fun parseAndValidateEbicsResponse(
 
     if (!XMLUtil.verifyEbicsDocument(
             responseDocument,
-            subscriberDetails.bankAuthPub ?: throw 
UtilError(HttpStatusCode.BadRequest, "Invalid subscriber state: bankAuthPub 
missing, please send HPB first")
+            subscriberDetails.bankAuthPub ?: throw UtilError(
+                HttpStatusCode.BadRequest,
+                "Invalid subscriber state: bankAuthPub missing, please send 
HPB first"
+            )
         )
     ) {
         throw UtilError(HttpStatusCode.InternalServerError, "Bank's signature 
validation failed")
@@ -442,7 +452,7 @@ fun getDecryptionKey(subscriberDetails: 
EbicsClientSubscriberDetails, pubDigest:
     if (pubDigest.contentEquals(encPubDigest)) {
         return subscriberDetails.customerEncPriv
     }
-    throw UtilError(HttpStatusCode.NotFound,"Could not find customer's public 
key")
+    throw UtilError(HttpStatusCode.NotFound, "Could not find customer's public 
key")
 }
 
 /**
@@ -489,8 +499,9 @@ fun makeEbicsHEVRequest(subscriberDetails: 
EbicsClientSubscriberDetails): String
 }
 
 fun makeEbicsHEVRequestRaw(hostID: String): String {
+    val h = hostID
     val req = HEVRequest().apply {
-        hostId = hostId
+        hostId = h
     }
     val doc = XMLUtil.convertJaxbToDocument(req)
     return XMLUtil.convertDomToString(doc)

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]