/*
* Copyright (c) Huawei Technologies Co., Ltd. 2022-2024. All rights reserved.
*/
package httpclient4cj
/**
* @file The file manage Http2Writer.
*/
class HttpHeaderUtils {
static func hasVaryAll(response: Response): Bool {
return hasVaryAll(response.getHeaders())
}
static func hasVaryAll(responseHeaders: Header): Bool {
return varyFields(responseHeaders).contains("*")
}
static func varyFields(responseHeaders: Header): Set<String> {
let result: Set<String> = HashSet()
for ((k, v) in responseHeaders) {
if (!equalsIgnoreCase("Vary", k)) {
continue
} else {
for (varyField in v[0].split(",")) {
result.add(varyField.trim())
}
}
}
return result
}
static func varyHeaders(response: Response): Header {
let requestHeaders = response.getNetworkResponse().getOrThrow().getRequest().getHeaders()
let responseHeaders = response.getHeaders()
return varyHeaders(requestHeaders, responseHeaders)
}
static func varyHeaders(requestHeaders: Header, responseHeaders: Header): Header {
let varyFields: Set<String> = varyFields(responseHeaders)
if (varyFields.isEmpty()) {
return Header()
}
let header = Header()
for ((k, v) in requestHeaders) {
if (varyFields.contains(k)) {
for (i in 0..v.size) {
header.add(k, v[i])
}
}
}
return header
}
}