mirror of
https://github.com/rancher/steve.git
synced 2025-04-27 02:51:10 +00:00
40 lines
919 B
Go
40 lines
919 B
Go
package handlers
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/rancher/steve/pkg/schemaserver/httperror"
|
|
"github.com/rancher/steve/pkg/schemaserver/parse"
|
|
"github.com/rancher/steve/pkg/schemaserver/types"
|
|
"github.com/rancher/wrangler/pkg/schemas/validation"
|
|
)
|
|
|
|
func UpdateHandler(apiOp *types.APIRequest) (types.APIObject, error) {
|
|
if err := apiOp.AccessControl.CanUpdate(apiOp, types.APIObject{}, apiOp.Schema); err != nil {
|
|
return types.APIObject{}, err
|
|
}
|
|
|
|
var (
|
|
data types.APIObject
|
|
err error
|
|
)
|
|
if apiOp.Method != http.MethodPatch {
|
|
data, err = parse.Body(apiOp.Request)
|
|
if err != nil {
|
|
return types.APIObject{}, err
|
|
}
|
|
}
|
|
|
|
store := apiOp.Schema.Store
|
|
if store == nil {
|
|
return types.APIObject{}, httperror.NewAPIError(validation.NotFound, "no store found")
|
|
}
|
|
|
|
data, err = store.Update(apiOp, apiOp.Schema, data, apiOp.Name)
|
|
if err != nil {
|
|
return types.APIObject{}, err
|
|
}
|
|
|
|
return data, nil
|
|
}
|