libeufin

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

commit 3e204b0b4d7d3aa54ecfd6f796ddda456f4a0d4f
parent 7677c4f17439c802345e6b1b101bd5e30724adf9
Author: ms <ms@taler.net>
Date:   Sat, 12 Feb 2022 10:24:54 +0100

Setting JSON request parser as the default.

Diffstat:
Asandbox/src/main/kotlin/tech/libeufin/sandbox/XMLEbicsConverter.kt | 41+++++++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+), 0 deletions(-)

diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/XMLEbicsConverter.kt b/sandbox/src/main/kotlin/tech/libeufin/sandbox/XMLEbicsConverter.kt @@ -0,0 +1,40 @@ +package tech.libeufin.sandbox + +import io.ktor.application.* +import io.ktor.features.* +import io.ktor.http.* +import io.ktor.http.content.* +import io.ktor.request.* +import io.ktor.response.* +import io.ktor.util.pipeline.* +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import tech.libeufin.util.XMLUtil +import java.io.OutputStream + +public class EbicsConverter : ContentConverter { + override suspend fun convertForReceive(context: PipelineContext<ApplicationReceiveRequest, ApplicationCall>): Any { + return context.context.receiveEbicsXml() + } + + override suspend fun convertForSend( + context: PipelineContext<Any, ApplicationCall>, + contentType: ContentType, + value: Any + ): Any? { + val conv = try { + XMLUtil.convertJaxbToString(value) + } catch (e: Exception) { + logger.warn("Could not convert XML to string with custom converter.") + return null + } + return OutputStreamContent({ + suspend fun writeAsync(out: OutputStream) { + withContext(Dispatchers.IO) { + out.write(conv.toByteArray()) + } + } + writeAsync(this) + }) + } +} +\ No newline at end of file