Skip to content

Commit ec5c0b6

Browse files
authored
Add Content-Type response headers (#323)
1 parent 8251bd9 commit ec5c0b6

File tree

3 files changed

+19
-5
lines changed

3 files changed

+19
-5
lines changed

src/main/kotlin/no/nav/pdfgen/application/api/pdf/GenerateHtmlApi.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ fun Route.registerGenerateHtmlApi(env: Environment = Environment()) {
1616
get("/{applicationName}/{template}") {
1717
val template = call.parameters["template"]!!
1818
val applicationName = call.parameters["applicationName"]!!
19-
createHtmlFromTemplateData(template, applicationName)?.let { call.respond(it) }
19+
createHtmlFromTemplateData(template, applicationName)?.let {
20+
call.response.header("Content-Type", ContentType.Text.Html.toString())
21+
call.respond(it)
22+
}
2023
?: call.respondText(
2124
"Template or application not found",
2225
status = HttpStatusCode.NotFound
@@ -31,6 +34,7 @@ fun Route.registerGenerateHtmlApi(env: Environment = Environment()) {
3134
val jsonNode: JsonNode = call.receive()
3235

3336
createHtml(template, applicationName, jsonNode)?.let {
37+
call.response.header("Content-Type", ContentType.Text.Html.toString())
3438
call.respond(it)
3539
logger.info("Done generating HTML in ${System.currentTimeMillis() - startTime}ms")
3640
}

src/main/kotlin/no/nav/pdfgen/application/api/pdf/GeneratePdfApi.kt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,10 @@ package no.nav.pdfgen.application.api.pdf
33
import com.fasterxml.jackson.databind.JsonNode
44
import io.ktor.http.ContentType
55
import io.ktor.http.HttpStatusCode
6-
import io.ktor.server.application.call
76
import io.ktor.server.request.contentType
87
import io.ktor.server.request.receive
98
import io.ktor.server.request.receiveText
10-
import io.ktor.server.response.respond
11-
import io.ktor.server.response.respondBytes
12-
import io.ktor.server.response.respondText
9+
import io.ktor.server.response.*
1310
import io.ktor.server.routing.*
1411
import java.io.ByteArrayOutputStream
1512
import java.io.InputStream
@@ -28,6 +25,7 @@ fun Route.registerGeneratePdfApi(env: Environment = Environment()) {
2825
val template = call.parameters["template"]!!
2926
val applicationName = call.parameters["applicationName"]!!
3027
createHtmlFromTemplateData(template, applicationName)?.let { document ->
28+
call.response.header("Content-Type", ContentType.Application.Pdf.toString())
3129
call.respond(createPDFA(document))
3230
}
3331
?: call.respondText(
@@ -43,6 +41,7 @@ fun Route.registerGeneratePdfApi(env: Environment = Environment()) {
4341
val jsonNode: JsonNode = call.receive()
4442

4543
createHtml(template, applicationName, jsonNode)?.let { document ->
44+
call.response.header("Content-Type", ContentType.Application.Pdf.toString())
4645
call.respond(createPDFA(document))
4746
logger.info("Done generating PDF in ${System.currentTimeMillis() - startTime}ms")
4847
}
@@ -59,6 +58,7 @@ fun Route.registerGeneratePdfApi(env: Environment = Environment()) {
5958

6059
val html = call.receiveText()
6160

61+
call.response.header("Content-Type", ContentType.Application.Pdf.toString())
6262
call.respond(createPDFA(html))
6363
logger.info(
6464
"Generated PDF using HTML template for $applicationName om ${timer.observeDuration()}ms"
@@ -76,6 +76,10 @@ fun Route.registerGeneratePdfApi(env: Environment = Environment()) {
7676
call.receive<InputStream>().use { inputStream ->
7777
ByteArrayOutputStream().use { outputStream ->
7878
createPDFA(inputStream, outputStream)
79+
call.response.header(
80+
"Content-Type",
81+
ContentType.Application.Pdf.toString()
82+
)
7983
call.respondBytes(
8084
outputStream.toByteArray(),
8185
contentType = ContentType.Application.Pdf

src/test/kotlin/no/nav/pdfgen/PdfGenITest.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ internal class PdfGenITest {
5151
}
5252
}
5353
assertEquals(true, response.status.isSuccess())
54+
assertEquals(true, response.headers["Content-Type"]!!.contains("application/pdf"))
5455
val bytes = runBlocking { response.readRawBytes() }
5556
assertNotEquals(null, bytes)
5657
// Load the document in pdfbox to ensure it's valid
@@ -104,6 +105,7 @@ internal class PdfGenITest {
104105
}
105106
}
106107
assertEquals(true, response.status.isSuccess())
108+
assertEquals(true, response.headers["Content-Type"]!!.contains("text/html"))
107109
assertEquals(true, response.bodyAsText().contains("<html>"))
108110
}
109111
}
@@ -215,6 +217,10 @@ internal class PdfGenITest {
215217
}
216218
.execute { response ->
217219
assertEquals(true, response.status.isSuccess())
220+
assertEquals(
221+
true,
222+
response.headers["Content-Type"]!!.contains("application/pdf"),
223+
)
218224
val bytes = response.readRawBytes()
219225
assertEquals(false, bytes.isEmpty())
220226
Files.write(Paths.get("build", outputFile), bytes)

0 commit comments

Comments
 (0)