1
0
mirror of https://github.com/rancher/steve.git synced 2025-09-04 08:55:55 +00:00
Files
steve/pkg/schemaserver/handlers/list.go

52 lines
1.4 KiB
Go
Raw Normal View History

2020-01-30 22:37:59 -07:00
package handlers
import (
"github.com/rancher/steve/pkg/schemaserver/httperror"
"github.com/rancher/steve/pkg/schemaserver/types"
"github.com/rancher/wrangler/pkg/schemas/validation"
)
func ByIDHandler(request *types.APIRequest) (types.APIObject, error) {
if err := request.AccessControl.CanGet(request, request.Schema); err != nil {
return types.APIObject{}, err
}
store := request.Schema.Store
if store == nil {
return types.APIObject{}, httperror.NewAPIError(validation.NotFound, "no store found")
}
2020-06-01 15:59:38 -07:00
resp, err := store.ByID(request, request.Schema, request.Name)
if err != nil {
return resp, err
}
if request.Link != "" {
if handler, ok := request.Schema.LinkHandlers[request.Link]; ok {
handler.ServeHTTP(request.Response, request.Request)
return types.APIObject{}, validation.ErrComplete
}
}
return resp, nil
2020-01-30 22:37:59 -07:00
}
func ListHandler(request *types.APIRequest) (types.APIObjectList, error) {
if request.Name == "" {
if err := request.AccessControl.CanList(request, request.Schema); err != nil {
return types.APIObjectList{}, err
}
} else {
if err := request.AccessControl.CanGet(request, request.Schema); err != nil {
return types.APIObjectList{}, err
}
}
store := request.Schema.Store
if store == nil {
return types.APIObjectList{}, httperror.NewAPIError(validation.NotFound, "no store found")
}
2020-06-01 15:59:38 -07:00
return store.List(request, request.Schema)
2020-01-30 22:37:59 -07:00
}