Documentation ¶
Overview ¶
Package validate provides a simple interface for validating JSON user input
Example:
type Item struct { Name string `json:"name"` Description string `json:"description"` } func (i *Item) Validate(ctx context.Context) error { if RuneCountInString(i.Name) == 0 { return fmt.Errorf("the field: name must be provided and not empty") } return nil } func CreateItem(w http.ResponseWriter, r *http.Request) { item := &Item{} if err := validate.JSONRequest(ctx, r, item); err != nil { w.WriteHeader(400) return } }
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func JSONRequest ¶
JSONRequest takes an http request, decodes the json and validates the input against a Validatable output the Validatable variable will get populated with the contents of the body provided by *http.Request
The base set of error types returned from this method are:
validate.IOError *json.SyntaxError *json.UnmarshalFieldError *json.UnmarshalTypeError
Usage:
type Item struct { Name string `json:"name"` Description string `json:"description"` } func (i *Item) Validate(ctx context.Context) error { if RuneCountInString(i.Name) == 0 { return fmt.Errorf("the field: name must be provided and not empty") } return nil } func CreateItem(w http.ResponseWriter, r *http.Request) { item := &Item{} if err := validate.JSONRequest(ctx, r, item); err != nil { w.WriteHeader(400) return } }
func Reader ¶
func Reader(ctx context.Context, r io.Reader, unmarshaller func(data []byte, v interface{}) error, v Validatable) error
Reader takes a generic io.Reader, an unmarshaller and validates the input against a Validatable item the Validatable variable will get populated with the contents of the body provided by *http.Request
Usage:
type ApiInput struct { Name string `json:"name"` Description string `json:"description"` } func (i *ApiInput) Validate(ctx context.Context) error { if utf8.RuneCountInString(i.Name) == 0 { return fmt.Errorf("the field: name must be provided and not empty") } return nil } func main() { input := &ApiInput{} if err := validate.Reader(ctx, reader, json.Unmarshal, input); err != nil { log.Panic(err) } }
func XMLRequest ¶
XMLRequest takes an http request docodes the xml into an item and validates the provided item
The base set of error types returned from this method are:
validate.IOError *xml.SyntaxError *xml.TagPathError *xml.UnmarshalError
Types ¶
type IOError ¶
type IOError struct {
// contains filtered or unexported fields
}
IOError for when we fail to read the stream
type Validatable ¶
Validatable items can self validate