mirror of
https://github.com/rancher/steve.git
synced 2025-04-28 03:10:32 +00:00
Fix nil panic
This commit is contained in:
parent
5671b6c3f9
commit
d61942f795
19
vendor/github.com/rancher/norman/pkg/api/server.go
generated
vendored
19
vendor/github.com/rancher/norman/pkg/api/server.go
generated
vendored
@ -100,6 +100,10 @@ func (s *Server) setDefaults(ctx *types.APIRequest) {
|
||||
}
|
||||
|
||||
ctx.AccessControl = s.AccessControl
|
||||
|
||||
if ctx.Schemas == nil {
|
||||
ctx.Schemas = s.Schemas
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Server) AddSchemas(schemas *types.Schemas) error {
|
||||
@ -162,14 +166,15 @@ func (s *Server) Handle(apiOp *types.APIRequest) {
|
||||
}
|
||||
|
||||
func (s *Server) handle(apiOp *types.APIRequest, rw http.ResponseWriter, req *http.Request, parser parse.Parser) {
|
||||
if apiOp.Schemas == nil {
|
||||
apiOp.Schemas = s.Schemas
|
||||
}
|
||||
if err := parser(apiOp, parse.MuxURLParser); err != nil {
|
||||
// ensure defaults set so writer is assigned
|
||||
s.setDefaults(apiOp)
|
||||
s.handleError(apiOp, err)
|
||||
return
|
||||
}
|
||||
|
||||
s.setDefaults(apiOp)
|
||||
|
||||
if code, data, err := s.handleOp(apiOp); err != nil {
|
||||
s.handleError(apiOp, err)
|
||||
} else {
|
||||
@ -200,8 +205,6 @@ func determineVerb(apiOp *types.APIRequest) Verb {
|
||||
}
|
||||
|
||||
func (s *Server) handleOp(apiOp *types.APIRequest) (int, interface{}, error) {
|
||||
s.setDefaults(apiOp)
|
||||
|
||||
if err := CheckCSRF(apiOp); err != nil {
|
||||
return 0, nil, err
|
||||
}
|
||||
@ -261,10 +264,10 @@ func handleAction(action *types.Action, context *types.APIRequest) error {
|
||||
}
|
||||
|
||||
func (s *Server) handleError(apiOp *types.APIRequest, err error) {
|
||||
if apiOp.Schema == nil {
|
||||
s.Defaults.ErrorHandler(apiOp, err)
|
||||
} else if apiOp.Schema.ErrorHandler != nil {
|
||||
if apiOp.Schema != nil && apiOp.Schema.ErrorHandler != nil {
|
||||
apiOp.Schema.ErrorHandler(apiOp, err)
|
||||
} else if s.Defaults.ErrorHandler != nil {
|
||||
s.Defaults.ErrorHandler(apiOp, err)
|
||||
}
|
||||
}
|
||||
|
||||
|
2
vendor/github.com/rancher/norman/pkg/api/writer/json.go
generated
vendored
2
vendor/github.com/rancher/norman/pkg/api/writer/json.go
generated
vendored
@ -62,6 +62,7 @@ func (j *EncodingResponseWriter) VersionBody(apiOp *types.APIRequest, writer io.
|
||||
case types.RawResource:
|
||||
output = v
|
||||
default:
|
||||
if v != nil {
|
||||
mapData, err := convert.EncodeToMap(obj)
|
||||
if err != nil {
|
||||
return err
|
||||
@ -72,6 +73,7 @@ func (j *EncodingResponseWriter) VersionBody(apiOp *types.APIRequest, writer io.
|
||||
}
|
||||
output = j.convert(builder, apiOp, mapData)
|
||||
}
|
||||
}
|
||||
|
||||
if list, ok := output.(*types.GenericCollection); ok && revision != "" {
|
||||
list.Revision = revision
|
||||
|
6
vendor/github.com/rancher/norman/pkg/types/server_types.go
generated
vendored
6
vendor/github.com/rancher/norman/pkg/types/server_types.go
generated
vendored
@ -238,10 +238,14 @@ func (a *APIObject) Raw() interface{} {
|
||||
}
|
||||
|
||||
func (a *APIObject) Map() data.Object {
|
||||
if a == nil {
|
||||
if a == nil || a.IsNil() {
|
||||
return nil
|
||||
}
|
||||
data, err := convert.EncodeToMap(a.Object)
|
||||
if err != nil {
|
||||
return convert.ToMapInterface(a.Object)
|
||||
}
|
||||
return data
|
||||
}
|
||||
|
||||
func (a APIObject) IsNil() bool {
|
||||
|
Loading…
Reference in New Issue
Block a user