1
0
mirror of https://github.com/redis/go-redis.git synced 2025-07-28 06:42:00 +03:00

fix(push): fix error checks

This commit is contained in:
Nedyalko Dyakov
2025-07-16 14:49:07 +03:00
parent 52f2b2c395
commit 8418c6b768

View File

@ -30,12 +30,12 @@ func ErrProtectedHandler(pushNotificationName string) error {
// ErrVoidProcessorRegister creates an error for when attempting to register a handler on void processor // ErrVoidProcessorRegister creates an error for when attempting to register a handler on void processor
func ErrVoidProcessorRegister(pushNotificationName string) error { func ErrVoidProcessorRegister(pushNotificationName string) error {
return NewProcessorError("void_processor", "register", "push notifications are disabled", nil) return NewProcessorError("void_processor", "register", pushNotificationName, "push notifications are disabled", nil)
} }
// ErrVoidProcessorUnregister creates an error for when attempting to unregister a handler on void processor // ErrVoidProcessorUnregister creates an error for when attempting to unregister a handler on void processor
func ErrVoidProcessorUnregister(pushNotificationName string) error { func ErrVoidProcessorUnregister(pushNotificationName string) error {
return NewProcessorError("void_processor", "unregister", "push notifications are disabled", nil) return NewProcessorError("void_processor", "unregister", pushNotificationName, "push notifications are disabled", nil)
} }
// Error message constants for consistency // Error message constants for consistency
@ -81,17 +81,18 @@ func NewHandlerError(operation, pushNotificationName, reason string, err error)
// ProcessorError represents errors related to processor operations // ProcessorError represents errors related to processor operations
type ProcessorError struct { type ProcessorError struct {
ProcessorType string // "processor", "void_processor" ProcessorType string // "processor", "void_processor"
Operation string // "process", "register", "unregister" Operation string // "process", "register", "unregister"
Reason string PushNotificationName string // Name of the push notification involved
Err error Reason string
Err error
} }
func (e *ProcessorError) Error() string { func (e *ProcessorError) Error() string {
if e.Err != nil { if e.Err != nil {
return fmt.Sprintf("%s %s failed: %s (%v)", e.ProcessorType, e.Operation, e.Reason, e.Err) return fmt.Sprintf("%s %s failed for '%s': %s (%v)", e.ProcessorType, e.Operation, e.PushNotificationName, e.Reason, e.Err)
} }
return fmt.Sprintf("%s %s failed: %s", e.ProcessorType, e.Operation, e.Reason) return fmt.Sprintf("%s %s failed for '%s': %s", e.ProcessorType, e.Operation, e.PushNotificationName, e.Reason)
} }
func (e *ProcessorError) Unwrap() error { func (e *ProcessorError) Unwrap() error {
@ -99,12 +100,13 @@ func (e *ProcessorError) Unwrap() error {
} }
// NewProcessorError creates a new ProcessorError // NewProcessorError creates a new ProcessorError
func NewProcessorError(processorType, operation, reason string, err error) *ProcessorError { func NewProcessorError(processorType, operation, pushNotificationName, reason string, err error) *ProcessorError {
return &ProcessorError{ return &ProcessorError{
ProcessorType: processorType, ProcessorType: processorType,
Operation: operation, Operation: operation,
Reason: reason, PushNotificationName: pushNotificationName,
Err: err, Reason: reason,
Err: err,
} }
} }
@ -142,12 +144,14 @@ func IsVoidProcessorError(err error) bool {
// extractNotificationName attempts to extract the notification name from error messages // extractNotificationName attempts to extract the notification name from error messages
func extractNotificationName(err error) string { func extractNotificationName(err error) string {
if handlerErr, ok := err.(*HandlerError); ok { if handlerErr, ok := err.(*HandlerError); ok {
return handlerErr.PushNotificationName if handlerErr.PushNotificationName != "" {
return handlerErr.PushNotificationName
}
} }
if procErr, ok := err.(*ProcessorError); ok { if procErr, ok := err.(*ProcessorError); ok {
// For ProcessorError, we don't have direct access to the notification name if procErr.PushNotificationName != "" {
// but in a real implementation you could store this in the struct return procErr.PushNotificationName
return "unknown" }
} }
return "unknown" return "unknown"
} }