in ktor-client/ktor-client-core/common/src/io/ktor/client/engine/Utils.kt [24:50]
public fun mergeHeaders(
requestHeaders: Headers,
content: OutgoingContent,
block: (key: String, value: String) -> Unit
) {
buildHeaders {
appendAll(requestHeaders)
appendAll(content.headers)
}.forEach { key, values ->
if (HttpHeaders.ContentLength == key) return@forEach // set later
if (HttpHeaders.ContentType == key) return@forEach // set later
// https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
block(key, values.joinToString(","))
}
val missingAgent = requestHeaders[HttpHeaders.UserAgent] == null && content.headers[HttpHeaders.UserAgent] == null
if (missingAgent && needUserAgent()) {
block(HttpHeaders.UserAgent, KTOR_DEFAULT_USER_AGENT)
}
val type = content.contentType?.toString() ?: content.headers[HttpHeaders.ContentType]
val length = content.contentLength?.toString() ?: content.headers[HttpHeaders.ContentLength]
type?.let { block(HttpHeaders.ContentType, it) }
length?.let { block(HttpHeaders.ContentLength, it) }
}