mirror of
https://github.com/niusmallnan/steve.git
synced 2025-09-15 22:39:56 +00:00
Refactor
This commit is contained in:
53
pkg/schemaserver/handlers/list.go
Normal file
53
pkg/schemaserver/handlers/list.go
Normal file
@@ -0,0 +1,53 @@
|
||||
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")
|
||||
}
|
||||
|
||||
return store.ByID(request, request.Schema, request.Name)
|
||||
}
|
||||
|
||||
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")
|
||||
}
|
||||
|
||||
if request.Link == "" {
|
||||
return store.List(request, request.Schema)
|
||||
}
|
||||
|
||||
_, err := store.ByID(request, request.Schema, request.Name)
|
||||
if err != nil {
|
||||
return types.APIObjectList{}, err
|
||||
}
|
||||
|
||||
if handler, ok := request.Schema.LinkHandlers[request.Link]; ok {
|
||||
handler.ServeHTTP(request.Response, request.Request)
|
||||
return types.APIObjectList{}, validation.ErrComplete
|
||||
}
|
||||
|
||||
return types.APIObjectList{}, validation.NotFound
|
||||
}
|
Reference in New Issue
Block a user