2017-11-21 20:46:30 +00:00
|
|
|
package handler
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/rancher/norman/parse"
|
|
|
|
"github.com/rancher/norman/parse/builder"
|
|
|
|
"github.com/rancher/norman/types"
|
|
|
|
)
|
|
|
|
|
2017-12-12 03:58:43 +00:00
|
|
|
func ParseAndValidateBody(apiContext *types.APIContext, create bool) (map[string]interface{}, error) {
|
2017-11-21 20:46:30 +00:00
|
|
|
data, err := parse.Body(apiContext.Request)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
b := builder.NewBuilder(apiContext)
|
|
|
|
|
2017-12-12 03:58:43 +00:00
|
|
|
op := builder.Create
|
|
|
|
if !create {
|
|
|
|
op = builder.Update
|
|
|
|
}
|
|
|
|
data, err = b.Construct(apiContext.Schema, data, op)
|
2017-11-28 21:28:25 +00:00
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
if apiContext.Schema.Validator != nil {
|
|
|
|
if err := apiContext.Schema.Validator(apiContext, data); err != nil {
|
2017-11-21 20:46:30 +00:00
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return data, nil
|
|
|
|
}
|