module

package
v0.53.0 Latest Latest
Warning

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

Go to latest
Published: Apr 21, 2021 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrInterceptStanzaInterrupted = errors.New("module: stanza interception interrupted")

ErrInterceptStanzaInterrupted will be returned by InterceptStanza to indicate that interception was interrupted.

Functions

This section is empty.

Types

type IQProcessor added in v0.52.0

type IQProcessor interface {
	Module

	// MatchesNamespace tells whether iq child namespace corresponds to this module.
	// The serverTarget parameter will be true in case iq target is a server entity.
	MatchesNamespace(namespace string, serverTarget bool) bool

	// ProcessIQ will be invoked whenever iq stanza should be processed by this module.
	ProcessIQ(ctx context.Context, iq *stravaganza.IQ) error
}

IQProcessor represents an iq processor module type.

type Module

type Module interface {
	// Name returns specific module name.
	Name() string

	// StreamFeature returns module stream feature element.
	StreamFeature(ctx context.Context, domain string) (stravaganza.Element, error)

	// ServerFeatures returns module server features.
	ServerFeatures(ctx context.Context) ([]string, error)

	// AccountFeatures returns module account features.
	AccountFeatures(ctx context.Context) ([]string, error)

	// Start starts module.
	Start(ctx context.Context) error

	// Stop stops module.
	Stop(ctx context.Context) error
}

Module represents generic module interface.

type Modules added in v0.3.2

type Modules struct {
	// contains filtered or unexported fields
}

Modules is the global module hub.

func NewModules added in v0.50.0

func NewModules(
	mods []Module,
	hosts *host.Hosts,
	router router.Router,
) *Modules

NewModules returns a new initialized Modules instance.

func (*Modules) InterceptStanza added in v0.52.2

func (m *Modules) InterceptStanza(ctx context.Context, stanza stravaganza.Stanza, incoming bool) (stravaganza.Stanza, error)

InterceptStanza performs module stanza transformation.

func (*Modules) IsEnabled added in v0.50.0

func (m *Modules) IsEnabled(moduleName string) bool

IsEnabled tells whether a specific module it's been registered.

func (*Modules) IsModuleIQ added in v0.50.0

func (m *Modules) IsModuleIQ(iq *stravaganza.IQ) bool

IsModuleIQ returns true in case iq stanza should be handled by modules.

func (*Modules) ProcessIQ added in v0.3.4

func (m *Modules) ProcessIQ(ctx context.Context, iq *stravaganza.IQ) error

ProcessIQ routes the iq to the corresponding iq handler module.

func (*Modules) Start added in v0.50.0

func (m *Modules) Start(ctx context.Context) error

Start starts modules.

func (*Modules) Stop added in v0.50.0

func (m *Modules) Stop(ctx context.Context) error

Stop stops modules.

func (*Modules) StreamFeatures added in v0.51.0

func (m *Modules) StreamFeatures(ctx context.Context, domain string) ([]stravaganza.Element, error)

StreamFeatures returns stream features of all registered modules.

type StanzaInterceptor added in v0.52.2

type StanzaInterceptor struct {
	// ID is the interceptor identifier. Note this identifier is intended to discern which interceptor
	// is being invoked when calling InterceptStanza method, so it doesn't need to be unique across different modules.
	ID int

	// Incoming tells whether the interceptor should be invoked; either upon receiving a stanza or before sending it to the target.
	Incoming bool

	// Priority represents interceptor priority that's used to determine which interceptors should be invoked first.
	// The higher the number the more priority.
	Priority int
}

StanzaInterceptor type allows to dynamically transform stanza content. Interceptors may be invoked upon receiving a stanza or before sending it to the target.

type StanzaInterceptorProcessor added in v0.52.2

type StanzaInterceptorProcessor interface {
	Module

	// Interceptors returns a set of all module interceptors.
	Interceptors() []StanzaInterceptor

	// InterceptStanza will be invoked to allow stanza transformation based on a StanzaInterceptor definition.
	// To interrupt interception ErrInterceptStanzaInterrupted should be returned.
	InterceptStanza(ctx context.Context, stanza stravaganza.Stanza, id int) (result stravaganza.Stanza, err error)
}

StanzaInterceptorProcessor represents an stanza interceptor module type.

Directories

Path Synopsis
pb

Jump to

Keyboard shortcuts

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