commit 944a1417bf697529d6aa2d9a1251fe1a991ce1cd
parent a321e4373781d35427bf25b99a00dda64fefe04b
Author: Marcello Stanisci <stanisci.m@gmail.com>
Date: Tue, 17 Sep 2019 17:52:04 +0200
Check if the message can be handled by the server.
Diffstat:
2 files changed, 17 insertions(+), 10 deletions(-)
diff --git a/src/main/java/tech/libeufin/XMLManagement.java b/src/main/java/tech/libeufin/XMLManagement.java
@@ -153,7 +153,7 @@ public class XMLManagement {
/* Make Transformer. */
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();
- t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+ // t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
t.setOutputProperty(OutputKeys.INDENT, "no");
/* Make string writer. */
diff --git a/src/main/kotlin/Main.kt b/src/main/kotlin/Main.kt
@@ -29,7 +29,9 @@ import io.ktor.server.netty.*
import tech.libeufin.XMLManagement;
import java.io.ByteArrayInputStream
import java.io.InputStream
+import org.w3c.dom.Document;
+val knownTypes = arrayOf("ebicsHEVRequest")
fun main(args: Array<String>) {
var xmlProcess = XMLManagement();
@@ -44,21 +46,26 @@ fun main(args: Array<String>) {
val isValid = xmlProcess.validate(body)
call.response.header("Content-Type", "application/xml")
- /*if (!isValid) {
- /* Return "invalid request" */
+ if (!isValid) {
+ call.respond(HttpStatusCode(400, "Invalid request"));
}
- if (!knownType) {
+ val bodyDocument = XMLManagement.parseStringIntoDOM(body)
+ if (null == bodyDocument)
+ {
+ /* Should never happen. */
+ System.out.println("A valid document failed to parse into DOM!")
+ call.respond(HttpStatusCode(500, "Internal server error"));
+ }
+ if (bodyDocument.documentElement !in knownTypes) {
/* Log to console and return "unknown type" */
+ System.out.println("Unknown message, just logging it!")
+ call.respond(HttpStatusCode(400, "Not found"));
}
- if (isValid){
- call.respond(HttpStatusCode.OK, xmlResponseObject)
- }
- else {
- call.respond(HttpStatusCode.BadRequest, xmlResponseObject)
- }*/
+ /* Generate response here. */
+
}
}
}