package http
import "core:strings"
Header :: struct {
name: string,
value: string,
}
headers_add :: proc(headers: ^[dynamic]Header, name, value: string) {
append(headers, Header{name = strings.to_lower(name), value = strings.clone(strings.trim_space(value))})
}
headers_get :: proc(headers: []Header, name: string) -> [dynamic]string {
values := make([dynamic]string, 0, 2)
for h in headers {
if strings.equal_fold(h.name, name) {
append(&values, h.value)
}
}
return values
}
headers_get_first :: proc(headers: []Header, name: string) -> (string, bool) {
for h in headers {
if strings.equal_fold(h.name, name) {
return h.value, true
}
}
return "", false
}
header_has_token :: proc(headers: []Header, name, token: string) -> bool {
v, ok := headers_get_first(headers, name)
if !ok {
return false
}
rest := v
for part in strings.split_iterator(&rest, ",") {
if strings.equal_fold(strings.trim_space(part), token) {
return true
}
}
return false
}