Skip to content

Commit

Permalink
Tillater xml i tilbakekreving-request
Browse files Browse the repository at this point in the history
  • Loading branch information
henrikg committed Oct 31, 2023
1 parent dd6383a commit 7e2c2ab
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 3 deletions.
1 change: 1 addition & 0 deletions apps/etterlatte-proxy/src/main/kotlin/Application.kt
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -17,10 +24,41 @@ fun Route.tilbakekrevingRoute(tilbakekrevingService: TilbakekrevingPortType) {
val logger = application.log

post("/tilbakekreving/tilbakekrevingsvedtak") {
val request = call.receive<TilbakekrevingsvedtakRequest>()
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
}

0 comments on commit 7e2c2ab

Please sign in to comment.