package emulator // This file contains all the api error handling functions import ( "errors" "fmt" "edge-infra.dev/pkg/lib/fog" "edge-infra.dev/pkg/sds/emergencyaccess/apierror" "edge-infra.dev/pkg/sds/lib/colors" "github.com/go-logr/logr" ) func (em Emulator) displayError(log logr.Logger, err error) { log.Error(err, "error with last operation") var apiErr apierror.APIError if ok := errors.As(err, &apiErr); ok { displayAPIErrorMessage(apiErr) displayDetails(apiErr) return } var userErr apierror.UserError if ok := errors.As(err, &userErr); ok { displayDetails(userErr) return } // if the error is not an api error, display unknown error fmt.Println(colors.Text("An unknown error occurred, check logs for details.", colors.FgRed)) } func displayDetails(err apierror.UserError) { if len(err.UserError()) == 0 { return } fmt.Println(colors.Text("Details:", colors.FgRedBold)) for _, str := range err.UserError() { fmt.Println(colors.Text("- %s", colors.FgRed, str)) } } func displayAPIErrorMessage(err apierror.APIError) { fmt.Println(colors.Text("%s", colors.FgRed, err.Message())) } func (em Emulator) displaySessionError(err error) { log := fog.FromContext(em.cls.GetSessionContext()) em.displayError(log, err) }