Documentation
¶
Overview ¶
Package webhook provides webhook delivery, dead letter management, and REST API.
Index ¶
Constants ¶
const XSequifySignatureHeader = "X-Sequify-Signature"
XSequifySignatureHeader is the HTTP header name for HMAC-SHA256 webhook signatures.
Variables ¶
var ErrDeadLetterNotFound = errors.New("webhook dead letter not found")
ErrDeadLetterNotFound is returned when a dead letter record does not exist.
Functions ¶
This section is empty.
Types ¶
type Consumer ¶
type Consumer struct {
// contains filtered or unexported fields
}
Consumer handles webhook task delivery via HTTP POST.
func NewConsumer ¶
NewConsumer creates a new webhook consumer. store is used for dead letter write on final failure (via ErrorHandler, not here). timeout is the HTTP request timeout. signingSecret is used for HMAC-SHA256 signatures (empty means no signature).
The HTTP client uses a custom Transport that re-validates DNS resolution at dial time to prevent DNS rebinding attacks (TOCTOU between validate and connect).
func NewConsumerWithSSRFCheck ¶
func NewConsumerWithSSRFCheck(store Store, timeout time.Duration, signingSecret string, skipSSRF bool) *Consumer
NewConsumerWithSSRFCheck creates a webhook consumer with explicit SSRF validation control. If skipSSRF is true, both URL validation and transport-level SSRF checks are bypassed (for testing against localhost only).
type Handler ¶
type Handler struct {
// contains filtered or unexported fields
}
Handler provides REST API endpoints for webhook dead letter management.
func NewHandler ¶
NewHandler creates a new webhook REST handler. If logger is nil, slog.Default() is used.
type Store ¶
type Store interface {
CreateDeadLetter(ctx context.Context, dl *model.DeadLetter) error
GetDeadLetter(ctx context.Context, id string) (*model.DeadLetter, error)
ListDeadLetters(ctx context.Context, userID string, page, size int) ([]*model.DeadLetter, int64, error)
DeleteDeadLetter(ctx context.Context, id string) error
DeleteDeadLetters(ctx context.Context, userID string) (int64, error)
}
Store defines the persistence layer for webhook dead letters, tracking failed webhook delivery attempts for later retry. Implementation: store/gorm package.