Files
onvif-go/errors.go
2025-10-30 00:50:27 +00:00

63 lines
1.8 KiB
Go

package onvif
import (
"errors"
"fmt"
)
var (
// ErrInvalidEndpoint is returned when the endpoint is invalid
ErrInvalidEndpoint = errors.New("invalid endpoint")
// ErrAuthenticationRequired is returned when authentication is required but not provided
ErrAuthenticationRequired = errors.New("authentication required")
// ErrAuthenticationFailed is returned when authentication fails
ErrAuthenticationFailed = errors.New("authentication failed")
// ErrServiceNotSupported is returned when a service is not supported by the device
ErrServiceNotSupported = errors.New("service not supported")
// ErrInvalidResponse is returned when the response is invalid
ErrInvalidResponse = errors.New("invalid response")
// ErrTimeout is returned when a request times out
ErrTimeout = errors.New("request timeout")
// ErrConnectionFailed is returned when connection to the device fails
ErrConnectionFailed = errors.New("connection failed")
// ErrInvalidParameter is returned when a parameter is invalid
ErrInvalidParameter = errors.New("invalid parameter")
// ErrNotInitialized is returned when the client is not initialized
ErrNotInitialized = errors.New("client not initialized")
)
// ONVIFError represents an ONVIF-specific error
type ONVIFError struct {
Code string
Reason string
Message string
}
// Error implements the error interface
func (e *ONVIFError) Error() string {
return fmt.Sprintf("ONVIF error [%s]: %s - %s", e.Code, e.Reason, e.Message)
}
// NewONVIFError creates a new ONVIF error
func NewONVIFError(code, reason, message string) *ONVIFError {
return &ONVIFError{
Code: code,
Reason: reason,
Message: message,
}
}
// IsONVIFError checks if an error is an ONVIF error
func IsONVIFError(err error) bool {
var onvifErr *ONVIFError
return errors.As(err, &onvifErr)
}