gin/binding/cookie.go

28 lines
569 B
Go

package binding
import "net/http"
type cookieBinding struct{}
func (cookieBinding) Name() string {
return "cookie"
}
func (b cookieBinding) Bind(req *http.Request, obj interface{}) error {
if err := b.BindOnly(req, obj); err != nil {
return err
}
return validate(obj)
}
func (cookieBinding) BindOnly(req *http.Request, obj interface{}) error {
cookies := req.Cookies()
form := make(map[string][]string, len(cookies))
for i := 0; i < len(cookies); i++ {
form[cookies[i].Name] = []string{cookies[i].Value}
}
return mapFormByTag(obj, form, "cookie")
}