41 lines
566 B
Go
41 lines
566 B
Go
package forms
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"net/http"
|
|
"net/url"
|
|
)
|
|
|
|
type Validator struct {
|
|
Failed bool
|
|
}
|
|
|
|
func (v *Validator) MinLength(s string, min int) error {
|
|
var err error = nil
|
|
if len(s) < min {
|
|
v.Failed = true
|
|
err = fmt.Errorf("Minimum length: %v", min)
|
|
}
|
|
|
|
return err
|
|
}
|
|
|
|
func (v *Validator) Fail(s string) error {
|
|
v.Failed = true
|
|
|
|
return errors.New(s)
|
|
}
|
|
|
|
func ParseFormData(r *http.Request, parse func(url.Values, *Validator)) bool {
|
|
v := Validator{}
|
|
err := r.ParseForm()
|
|
if err != nil {
|
|
return true
|
|
}
|
|
|
|
parse(r.Form, &v)
|
|
|
|
return v.Failed
|
|
}
|