From 7e2c2ab9190bc925edbe8cea8777cd6e0f9ae177 Mon Sep 17 00:00:00 2001 From: henrikg Date: Tue, 31 Oct 2023 23:16:15 +0100 Subject: [PATCH] Tillater xml i tilbakekreving-request --- .../src/main/kotlin/Application.kt | 1 + .../main/kotlin/routes/TilbakekrevingRoute.kt | 44 +++++++++++++++++-- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/apps/etterlatte-proxy/src/main/kotlin/Application.kt b/apps/etterlatte-proxy/src/main/kotlin/Application.kt index 3ccf7537..0597cf56 100644 --- a/apps/etterlatte-proxy/src/main/kotlin/Application.kt +++ b/apps/etterlatte-proxy/src/main/kotlin/Application.kt @@ -1,5 +1,6 @@ package no.nav.etterlatte +import io.ktor.http.ContentType import io.ktor.serialization.jackson.jackson import io.ktor.server.application.Application import io.ktor.server.application.install diff --git a/apps/etterlatte-proxy/src/main/kotlin/routes/TilbakekrevingRoute.kt b/apps/etterlatte-proxy/src/main/kotlin/routes/TilbakekrevingRoute.kt index 2fea7bc7..d95b5666 100644 --- a/apps/etterlatte-proxy/src/main/kotlin/routes/TilbakekrevingRoute.kt +++ b/apps/etterlatte-proxy/src/main/kotlin/routes/TilbakekrevingRoute.kt @@ -3,12 +3,19 @@ package no.nav.etterlatte.routes import io.ktor.server.application.call import io.ktor.server.application.log import io.ktor.server.request.receive +import io.ktor.server.request.receiveText import io.ktor.server.response.respond import io.ktor.server.routing.Route import io.ktor.server.routing.application import io.ktor.server.routing.post +import jakarta.xml.bind.JAXBContext +import jakarta.xml.bind.Marshaller import no.nav.okonomi.tilbakekrevingservice.TilbakekrevingPortType import no.nav.okonomi.tilbakekrevingservice.TilbakekrevingsvedtakRequest +import no.nav.okonomi.tilbakekrevingservice.TilbakekrevingsvedtakResponse +import java.io.StringWriter +import javax.xml.stream.XMLInputFactory +import javax.xml.transform.stream.StreamSource /** * Endepunkter for å integrere med tilbakekrevingstjenesten fra gcp til fss @@ -17,10 +24,41 @@ fun Route.tilbakekrevingRoute(tilbakekrevingService: TilbakekrevingPortType) { val logger = application.log post("/tilbakekreving/tilbakekrevingsvedtak") { - val request = call.receive() + val request = call.receiveText() + logger.info(request) + + val vedtakRequest = toTilbakekrevingsvedtakRequest(request) + + logger.info("Videresender tilbakekrevingsvedtak ${vedtakRequest.tilbakekrevingsvedtak.vedtakId} til on-prem") + val response = tilbakekrevingService.tilbakekrevingsvedtak(vedtakRequest) + logger.info(toXml(response)) - logger.info("Videresender tilbakekrevingsvedtak ${request.tilbakekrevingsvedtak.vedtakId} til on-prem") - val response = tilbakekrevingService.tilbakekrevingsvedtak(request) call.respond(response) } + + +} + +val jaxbContext = JAXBContext.newInstance(TilbakekrevingsvedtakRequest::class.java) +val jaxbContextResponse = JAXBContext.newInstance(TilbakekrevingsvedtakResponse::class.java) +val xmlInputFactory = XMLInputFactory.newInstance() + +fun toXml(response: TilbakekrevingsvedtakResponse): String { + val marshaller = jaxbContextResponse.createMarshaller() + marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true) + + val stringWriter = StringWriter() + stringWriter.use { + marshaller.marshal(response, stringWriter) + } + + return stringWriter.toString() +} +fun toTilbakekrevingsvedtakRequest(xml: String): TilbakekrevingsvedtakRequest { + val request = + jaxbContext.createUnmarshaller().unmarshal( + xmlInputFactory.createXMLStreamReader(StreamSource(xml)), + TilbakekrevingsvedtakRequest::class.java, + ) + return request.value } \ No newline at end of file