Skip to content

Commit

Permalink
Tilrettelegger for filkonvertering
Browse files Browse the repository at this point in the history
  • Loading branch information
almyy committed May 13, 2024
1 parent 10ae520 commit c0da168
Show file tree
Hide file tree
Showing 8 changed files with 55 additions and 34 deletions.
1 change: 1 addition & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ val githubPassword: String by project

repositories {
mavenCentral()
mavenLocal()
maven("https://plugins.gradle.org/m2/")
maven("https://repo.spring.io/plugins-release/")
maven {
Expand Down
5 changes: 5 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ ktlint = "1.0.1"
mockk = "1.13.9"
spring_mockk = "4.0.2"

filkonvertering = "1.0.0-SNAPSHOT"

[libraries]
kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" }
kotlinx-coroutines-slf4j = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-slf4j", version.ref = "coroutines" }
Expand Down Expand Up @@ -89,6 +91,8 @@ springmockk = { module = "com.ninja-squad:springmockk", version.ref = "spring_mo
mockk = { module = "io.mockk:mockk", version.ref = "mockk" }
token-validation-spring-test = { module = "no.nav.security:token-validation-spring-test", version.ref = "token_validation" }

sosialhjelp-filkonvertering = { module = "no.nav.sosialhjelp:sosialhjelp-filkonverterer", version.ref = "filkonvertering" }

[bundles]
spring-boot = [
"spring-boot-actuator",
Expand Down Expand Up @@ -120,6 +124,7 @@ commons = [
sosialhjelp-common = [
"sosialhjelp-common-api",
"sosialhjelp-common-selftest",
"sosialhjelp-filkonvertering"
]

prometheus = [
Expand Down
2 changes: 1 addition & 1 deletion src/main/kotlin/no/nav/sosialhjelp/innsyn/Application.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package no.nav.sosialhjelp.innsyn
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication

@SpringBootApplication
@SpringBootApplication(scanBasePackages = ["no.nav"])
class Application

fun main(args: Array<String>) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -314,39 +314,6 @@ class FiksClientImpl(
return body
}

fun createHttpEntityOfString(
body: String,
name: String,
): HttpEntity<Any> {
return createHttpEntity(body, name, null, "text/plain;charset=UTF-8")
}

fun createHttpEntityOfFile(
file: FilForOpplasting,
name: String,
): HttpEntity<Any> {
return createHttpEntity(InputStreamResource(file.fil), name, file.filnavn, "application/octet-stream")
}

private fun createHttpEntity(
body: Any,
name: String,
filename: String?,
contentType: String,
): HttpEntity<Any> {
val headerMap = LinkedMultiValueMap<String, String>()
val builder: ContentDisposition.Builder =
ContentDisposition
.builder("form-data")
.name(name)
val contentDisposition: ContentDisposition =
if (filename == null) builder.build() else builder.filename(filename).build()

headerMap.add(HttpHeaders.CONTENT_DISPOSITION, contentDisposition.toString())
headerMap.add(HttpHeaders.CONTENT_TYPE, contentType)
return HttpEntity(body, headerMap)
}

fun serialiser(metadata: Any): String {
try {
return objectMapper.writeValueAsString(metadata)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestHeader
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import java.time.LocalDate

@ProtectedWithClaims(issuer = SELVBETJENING, claimMap = [ACR_LEVEL4, ACR_IDPORTEN_LOA_HIGH], combineWithOr = true)
@RestController
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import kotlinx.coroutines.slf4j.MDCContext
import kotlinx.coroutines.withContext
import no.nav.sbl.soknadsosialhjelp.vedlegg.JsonVedlegg
import no.nav.security.token.support.core.api.ProtectedWithClaims
import no.nav.sosialhjelp.filkonvertering.service.FileConversionService
import no.nav.sosialhjelp.filkonvertering.service.VedleggKonverteringOpplasting
import no.nav.sosialhjelp.innsyn.app.ClientProperties
import no.nav.sosialhjelp.innsyn.app.xsrf.XsrfGenerator
import no.nav.sosialhjelp.innsyn.digisosapi.FiksClient
Expand All @@ -24,10 +26,14 @@ import no.nav.sosialhjelp.innsyn.utils.objectMapper
import no.nav.sosialhjelp.innsyn.vedlegg.dto.OppgaveOpplastingResponse
import no.nav.sosialhjelp.innsyn.vedlegg.dto.VedleggOpplastingResponse
import no.nav.sosialhjelp.innsyn.vedlegg.dto.VedleggResponse
import org.springframework.http.HttpEntity
import org.springframework.http.HttpHeaders
import org.springframework.http.HttpStatus
import org.springframework.http.MediaType
import org.springframework.http.ResponseEntity
import org.springframework.http.client.MultipartBodyBuilder
import org.springframework.util.MultiValueMap
import org.springframework.util.MultiValueMapAdapter
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.PostMapping
Expand All @@ -36,6 +42,8 @@ import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestPart
import org.springframework.web.bind.annotation.RestController
import org.springframework.web.multipart.MultipartFile
import org.springframework.web.reactive.function.BodyInserter
import org.springframework.web.reactive.function.BodyInserters
import java.time.LocalDate
import java.util.UUID

Expand All @@ -45,13 +53,45 @@ import java.util.UUID
@RequestMapping("/api/v1/innsyn")
class VedleggController(
private val vedleggOpplastingService: VedleggOpplastingService,
private val fileConverterService: FileConversionService,
private val vedleggService: VedleggService,
private val clientProperties: ClientProperties,
private val tilgangskontroll: TilgangskontrollService,
private val xsrfGenerator: XsrfGenerator,
private val eventService: EventService,
private val fiksClient: FiksClient,
) {
@PostMapping("/{fiksDigisosId}/vedlegg/konverter", consumes = [MediaType.MULTIPART_FORM_DATA_VALUE])
fun konverterVedlegg(
@PathVariable fiksDigisosId: String,
@RequestPart("files") rawFiles: List<MultipartFile>,
@RequestHeader(value = HttpHeaders.AUTHORIZATION) token: String,
request: HttpServletRequest,
): ResponseEntity<MultiValueMap<String, HttpEntity<*>>> =
runBlocking {
withContext(MDCContext() + RequestAttributesContext()) {
log.info("Forsøker å konvertere vedlegg")
tilgangskontroll.sjekkTilgang(token)
xsrfGenerator.sjekkXsrfToken(request)

check(rawFiles.isNotEmpty()) { "Ingen filer sendt til konvertering" }

val opplastinger =
rawFiles.map {
VedleggKonverteringOpplasting(it)
}.let {
fileConverterService.convertFileToPdf(it)
}
val bodyBuilder = MultipartBodyBuilder()
opplastinger.onEach { bodyBuilder.part(it.key.convertedName, HttpEntity(it.value.getOrThrow()), MediaType.APPLICATION_PDF) }
println("Har lagt til parts")
val body = bodyBuilder.build()
println("Har bygget body: ${body}")

ResponseEntity.ok().contentType(MediaType.MULTIPART_FORM_DATA).body(body)
}
}

// Send alle opplastede vedlegg for fiksDigisosId til Fiks
@PostMapping("/{fiksDigisosId}/vedlegg", consumes = [MediaType.MULTIPART_FORM_DATA_VALUE])
fun sendVedlegg(
Expand Down
4 changes: 4 additions & 0 deletions src/main/resources/application-mock-alt.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,3 +67,7 @@ idporten_post_logout_redirect_uri: ${IDPORTEN_POST_LOGOUT_REDIRECT_URI:https://w
idporten_login_timeout: ${IDPORTEN_LOGIN_TIMEOUT:3600}
idporten_session_timeout: ${IDPORTEN_SESSION_TIMEOUT:7200}
idporten_token_timeout: ${IDPORTEN_TOKEN_TIMEOUT:3600}

filkonvertering:
metricPrefix: innsyn
gotenbergUrl: ${GOTENBERG_URL}
3 changes: 3 additions & 0 deletions src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,3 +104,6 @@ fiks-io:
private-key-path: "/var/run/secrets/key.der"
kontoId: ${FIKS_IO_KONTO_ID:}
virksomhetssertifikatPath: ${VIRKSERT_PATH:}
logging:
level:
no.nav: debug

0 comments on commit c0da168

Please sign in to comment.