libeufin

Integration and sandbox testing for FinTech APIs and data formats
Log | Files | Refs | Submodules | README | LICENSE

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:
Msrc/main/java/tech/libeufin/XMLManagement.java | 14++++++++++++++
Msrc/main/kotlin/Main.kt | 15++++++++++++---
Msrc/test/java/XMLManagementTest.java | 2++
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>")); } }