package form import ( "gosten/csrf" "log" "net/http" "github.com/gorilla/schema" ) var schemaDecoder *schema.Decoder func init() { schemaDecoder = schema.NewDecoder() schemaDecoder.IgnoreUnknownKeys(true) } func Parse[T any](r *http.Request, data *T) { if err := r.ParseForm(); err != nil { log.Panic("Parsing form: ", err) } if err := schemaDecoder.Decode(data, r.PostForm); err != nil { log.Panic("Decoding form: ", err) } if withCsrf, ok := any(data).(csrf.Enabled); ok { withCsrf.SetCsrfField(r) } }