Documentation
¶
Index ¶
- type ContentFilterConfig
- type FilterChain
- type FilterCondition
- type FilterFunc
- type MessageFilter
- func NewContentFilter(config ContentFilterConfig) MessageFilter
- func NewMetadataFilter(config MetadataFilterConfig) MessageFilter
- func NewPermissionFilter(checker PermissionChecker) MessageFilter
- func NewSimpleFilter(name string, priority int, fn FilterFunc) MessageFilter
- func NewSizeFilter(config SizeFilterConfig) MessageFilter
- type MetadataFilterConfig
- type PermissionChecker
- type SizeFilterConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ContentFilterConfig ¶
type ContentFilterConfig struct {
// Profanity filtering
EnableProfanity bool
ProfanityList []string
ProfanityAction string // "block", "replace", "flag"
ReplaceWith string
// URL filtering
EnableURLFilter bool
AllowedDomains []string
BlockedDomains []string
// Spam detection
EnableSpamDetection bool
MaxURLs int
MaxMentions int
MaxEmojis int
MaxRepeatedChars int
}
ContentFilterConfig configures content filtering.
type FilterChain ¶
type FilterChain interface {
// Add registers a filter
Add(filter MessageFilter)
// Remove unregisters a filter
Remove(filterName string)
// Apply runs all filters in priority order
Apply(ctx context.Context, msg *streaming.Message, recipient streaming.EnhancedConnection) (*streaming.Message, error)
// List returns all registered filters
List() []MessageFilter
}
FilterChain manages filter execution.
type FilterCondition ¶
type FilterCondition func(ctx context.Context, msg *streaming.Message, recipient streaming.EnhancedConnection) bool
FilterCondition defines a custom filter condition.
type FilterFunc ¶
type FilterFunc func(ctx context.Context, msg *streaming.Message, recipient streaming.EnhancedConnection) (*streaming.Message, error)
FilterFunc is a function adapter for simple filters.
type MessageFilter ¶
type MessageFilter interface {
// Name returns unique filter identifier
Name() string
// Filter processes message and returns filtered result
// Returns nil to block message
Filter(ctx context.Context, msg *streaming.Message, recipient streaming.EnhancedConnection) (*streaming.Message, error)
// Priority returns filter execution order (lower = earlier)
Priority() int
}
MessageFilter represents a filter applied before message delivery.
func NewContentFilter ¶
func NewContentFilter(config ContentFilterConfig) MessageFilter
NewContentFilter creates a content filter.
func NewMetadataFilter ¶
func NewMetadataFilter(config MetadataFilterConfig) MessageFilter
NewMetadataFilter creates a metadata filter.
func NewPermissionFilter ¶
func NewPermissionFilter(checker PermissionChecker) MessageFilter
NewPermissionFilter creates a permission filter.
func NewSimpleFilter ¶
func NewSimpleFilter(name string, priority int, fn FilterFunc) MessageFilter
NewSimpleFilter creates a filter from a function.
func NewSizeFilter ¶
func NewSizeFilter(config SizeFilterConfig) MessageFilter
NewSizeFilter creates a size filter.
type MetadataFilterConfig ¶
type MetadataFilterConfig struct {
// Filter by room/channel
FilterByRoom bool
FilterByChannel bool
// Filter by message type
FilterByType bool
AllowedTypes []string
BlockedTypes []string
// Custom conditions
CustomConditions map[string]FilterCondition
}
MetadataFilterConfig configures metadata-based filtering.
type PermissionChecker ¶
type PermissionChecker interface {
// HasPermission checks if recipient can receive message
HasPermission(ctx context.Context, recipient streaming.EnhancedConnection, msg *streaming.Message) (bool, error)
}
PermissionChecker checks if recipient has permission to receive message.
func NewDefaultPermissionChecker ¶
func NewDefaultPermissionChecker(roomStore streaming.RoomStore) PermissionChecker
NewDefaultPermissionChecker creates a basic permission checker.
type SizeFilterConfig ¶
type SizeFilterConfig struct {
// Max message size in bytes
MaxMessageSize int
// Truncation
EnableTruncation bool
TruncateLength int
// Compression
EnableCompression bool
CompressionThreshold int // Compress if larger than this
CompressionMinSavings float64 // Only use compression if saves this % (0.0-1.0)
}
SizeFilterConfig configures size-based filtering.