package httpbinding
import (
)
type Headers struct {
header http.Header
prefix string
}
func ( Headers) ( string) HeaderValue {
return .newHeaderValue(, true)
}
func ( Headers) ( string) HeaderValue {
return .newHeaderValue(, false)
}
func ( Headers) ( string, bool) HeaderValue {
return newHeaderValue(.header, .prefix+strings.TrimSpace(), )
}
type HeaderValue struct {
header http.Header
key string
append bool
}
func ( http.Header, string, bool) HeaderValue {
return HeaderValue{header: , key: strings.TrimSpace(), append: }
}
func ( HeaderValue) ( string) {
if .append {
.header[.key] = append(.header[.key], )
} else {
.header[.key] = append(.header[.key][:0], )
}
}
func ( HeaderValue) ( string) {
.modifyHeader()
}
func ( HeaderValue) ( int8) {
.Long(int64())
}
func ( HeaderValue) ( int16) {
.Long(int64())
}
func ( HeaderValue) ( int32) {
.Long(int64())
}
func ( HeaderValue) ( int64) {
.modifyHeader(strconv.FormatInt(, 10))
}
func ( HeaderValue) ( bool) {
.modifyHeader(strconv.FormatBool())
}
func ( HeaderValue) ( float32) {
.float(float64(), 32)
}
func ( HeaderValue) ( float64) {
.float(, 64)
}
func ( HeaderValue) ( float64, int) {
switch {
case math.IsNaN():
.String(floatNaN)
case math.IsInf(, 1):
.String(floatInfinity)
case math.IsInf(, -1):
.String(floatNegInfinity)
default:
.modifyHeader(strconv.FormatFloat(, 'f', -1, ))
}
}
func ( HeaderValue) ( *big.Int) {
.modifyHeader(.String())
}
func ( HeaderValue) ( *big.Float) {
if , := .Int64(); == big.Exact {
.Long()
return
}
.modifyHeader(.Text('e', -1))
}
func ( HeaderValue) ( []byte) {
:= base64.StdEncoding.EncodeToString()
.modifyHeader()
}