commit 1c021799a1c1803fc17bbcc2d247099b0a7dae5b
parent 5b6c771afd40231606e57108189d1f876a14963e
Author: Marcello Stanisci <stanisci.m@gmail.com>
Date: Mon, 16 Sep 2019 01:05:38 +0200
Abstracting string conversion to "stream".
Diffstat:
3 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/src/main/java/tech/libeufin/XMLManagement.java b/src/main/java/tech/libeufin/XMLManagement.java
@@ -7,6 +7,8 @@ import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.Source;
import javax.xml.validation.*; // has SchemaFactory
import java.io.File;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
/**
* This class takes care of importing XSDs and validate
@@ -58,4 +60,16 @@ public class XMLManagement {
}
return true;
}
+
+ /**
+ * Craft object to be passed to the XML validator.
+ * @param xmlString XML body, as read from the POST body.
+ * @return InputStream object, as wanted by the validator.
+ */
+ public boolean validate(String xmlString){
+ InputStream xmlInputStream = new ByteArrayInputStream(xmlString.getBytes());
+ Source xmlSource = new StreamSource(xmlInputStream);
+ return this.validate(xmlSource);
+ }
+
};
\ No newline at end of file
diff --git a/src/main/kotlin/Main.kt b/src/main/kotlin/Main.kt
@@ -27,10 +27,12 @@ import io.ktor.routing.*
import io.ktor.server.engine.*
import io.ktor.server.netty.*
import tech.libeufin.XMLManagement;
+import java.io.ByteArrayInputStream
+import java.io.InputStream
-fun main(args: Array<String>) {
- var xmlprocess = XMLManagement();
+fun main(args: Array<String>) {
+ var xmlProcess = XMLManagement();
val server = embeddedServer(Netty, port = 5000) {
routing {
get("/") {
@@ -39,7 +41,14 @@ fun main(args: Array<String>) {
post("/") {
val body: String = call.receiveText()
println("Body: $body")
- call.respondText("Your request has been logged.", ContentType.Text.Plain)
+ val isValid = xmlProcess.validate(body)
+ call.response.header("Content-Type", "application/xml")
+ if (isValid){
+ call.respond(HttpStatusCode.OK, xmlResponseObject)
+ }
+ else {
+ call.respond(HttpStatusCode.BadRequest, xmlResponseObject)
+ }
}
}
}
diff --git a/src/test/java/XMLManagementTest.java b/src/test/java/XMLManagementTest.java
@@ -23,5 +23,7 @@ public class XMLManagementTest {
InputStream is = new ByteArrayInputStream("<InvalidXML>".getBytes());
Source ebics_from_string = new StreamSource(is);
assertFalse(xm.validate(ebics_from_string));
+
+ assertFalse(xm.validate("<moreInvalidXML>"));
}
}