filters

package
v0.1.12 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 28, 2025 License: MIT Imports: 10 Imported by: 0

Documentation

Index

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.

func NewFilterChain

func NewFilterChain() FilterChain

NewFilterChain creates a new filter chain.

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL