diff --git a/src/main/kotlin/dev/typetype/server/services/DownloaderGatewayService.kt b/src/main/kotlin/dev/typetype/server/services/DownloaderGatewayService.kt index db47985..a2926ac 100644 --- a/src/main/kotlin/dev/typetype/server/services/DownloaderGatewayService.kt +++ b/src/main/kotlin/dev/typetype/server/services/DownloaderGatewayService.kt @@ -46,7 +46,7 @@ class DownloaderGatewayService( fun openFetchAbsolute(url: String, headers: Map): Response { val requestBuilder = Request.Builder().url(url).method("GET", null) - headers["Range"]?.takeIf { it.isNotBlank() }?.let { requestBuilder.addHeader("Range", it) } + headerValue(headers, "Range")?.takeIf { it.isNotBlank() }?.let { requestBuilder.addHeader("Range", it) } return client.newCall(requestBuilder.build()).execute() } @@ -62,4 +62,7 @@ class DownloaderGatewayService( val lower = name.lowercase() return lower != "host" && lower != "content-length" && lower != "connection" } + + private fun headerValue(headers: Map, name: String): String? = + headers.entries.firstOrNull { it.key.equals(name, ignoreCase = true) }?.value } diff --git a/src/test/kotlin/dev/typetype/server/DownloaderGatewayArtifactProxyTest.kt b/src/test/kotlin/dev/typetype/server/DownloaderGatewayArtifactProxyTest.kt index 5943c57..292a8ae 100644 --- a/src/test/kotlin/dev/typetype/server/DownloaderGatewayArtifactProxyTest.kt +++ b/src/test/kotlin/dev/typetype/server/DownloaderGatewayArtifactProxyTest.kt @@ -54,7 +54,7 @@ class DownloaderGatewayArtifactProxyTest { try { val response = client.get("/downloader/jobs/test/artifact") { - header(HttpHeaders.Range, "bytes=0-2") + header(HttpHeaders.Range.lowercase(), "bytes=0-2") } assertEquals(HttpStatusCode.PartialContent, response.status) assertEquals("bytes=0-2", requestedRange.get())