Files
gout/encode/header.go
2023-03-06 22:52:26 +08:00

37 lines
791 B
Go

package encode
import (
"net/http"
"reflect"
)
var _ Adder = (*HeaderEncode)(nil)
// HeaderEncode http header encoder structure
type HeaderEncode struct {
r *http.Request
rawHeader bool
}
// NewHeaderEncode create a new http header encoder
func NewHeaderEncode(req *http.Request, rawHeader bool) *HeaderEncode {
return &HeaderEncode{r: req, rawHeader: rawHeader}
}
// Add Encoder core function, used to set each key / value into the http header
func (h *HeaderEncode) Add(key string, v reflect.Value, sf reflect.StructField) error {
value := valToStr(v, sf)
if !h.rawHeader {
h.r.Header.Add(key, value)
} else {
h.r.Header[key] = append(h.r.Header[key], value)
}
return nil
}
// Name header Encoder name
func (h *HeaderEncode) Name() string {
return "header"
}