53 lines
878 B
Go
53 lines
878 B
Go
package router
|
|
|
|
import (
|
|
"strings"
|
|
)
|
|
|
|
type header interface {
|
|
mustEmbedHeader()
|
|
}
|
|
|
|
type Header map[string][]string
|
|
|
|
func (Header) mustEmbedHeader() {}
|
|
|
|
func (h Header) Marshal(data any) error {
|
|
return genericValues(h).Marshal(data, "header")
|
|
}
|
|
|
|
func (h Header) Unmarshal(data any) error {
|
|
return genericValues(h).Unmarshal(data, "header")
|
|
}
|
|
|
|
func (h Header) Get(key string) (value string) {
|
|
v, ok := h[key]
|
|
if !ok {
|
|
return
|
|
}
|
|
return strings.Join(v, ", ")
|
|
}
|
|
|
|
func (h Header) Set(key string, value string) {
|
|
h[key] = []string{value}
|
|
}
|
|
|
|
func (h Header) Add(key string, value string) {
|
|
h[key] = append(h[key], value)
|
|
}
|
|
|
|
func (h Header) Merge(header Header) {
|
|
for key, value := range header {
|
|
if _, exists := h[key]; exists {
|
|
continue
|
|
}
|
|
h[key] = value
|
|
}
|
|
}
|
|
|
|
func (h Header) MergeOverwrite(header Header) {
|
|
for key, value := range header {
|
|
h[key] = value
|
|
}
|
|
}
|