notifiers

package
v0.35.0 Latest Latest
Warning

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

Go to latest
Published: Feb 6, 2026 License: Apache-2.0 Imports: 11 Imported by: 0

README

Notifiers service

Notifiers service provides a service for sending notifications using Notifiers. Notifiers service can be configured to use different types of Notifiers to send different types of notifications such as SMS messages, emails, or push notifications. Service is extensible so that new implementations of Notifiers can be easily added. Notifiers are not standalone services but rather dependencies used by Notifiers service for sending notifications over specific protocols.

Configuration

The profile config should include a list of contact emails. These emails are the recipients of the messages sent by the service. Configuration of the service is achieved through environment variables. The environment variables needed for service configuration depend on the underlying Notifier. An example of the service configuration for SMTP Notifier can be found in SMTP Notifier documentation. Note that any unset variables will be replaced with their default values.

Usage

Subscriptions service will start consuming messages and sending notifications when a message is received.

Documentation

Overview

Package notifiers contain the domain concept definitions needed to support Mainflux notifications functionality.

Index

Constants

This section is empty.

Variables

View Source
var ErrNotify = errors.New("failed to send notification")

ErrNotify wraps sending notification errors,

Functions

This section is empty.

Types

type Notifier

type Notifier struct {
	ID       string
	GroupID  string
	Name     string
	Contacts []string
	Metadata map[string]any
}

type NotifierRepository

type NotifierRepository interface {
	// Save persists multiple notifiers. Notifiers are saved using a transaction.
	// If one notifier fails then none will be saved.
	// Successful operation is indicated by non-nil error response.
	Save(ctx context.Context, nfs ...Notifier) ([]Notifier, error)

	// RetrieveByGroup retrieves notifiers related to a certain group,
	// identified by a given ID.
	RetrieveByGroup(ctx context.Context, groupID string, pm apiutil.PageMetadata) (NotifiersPage, error)

	// RetrieveByID retrieves the notifier having the provided ID.
	RetrieveByID(ctx context.Context, id string) (Notifier, error)

	// Update performs an update to the existing notifier.
	// A non-nil error is returned to indicate operation failure.
	Update(ctx context.Context, n Notifier) error

	// Remove removes notifiers having the provided IDs.
	Remove(ctx context.Context, ids ...string) error

	// RemoveByGroup removes notifiers related to a certain group,
	// identified by a given group ID.
	RemoveByGroup(ctx context.Context, groupID string) error
}

NotifierRepository specifies a notifier persistence API.

type NotifiersPage added in v0.28.1

type NotifiersPage struct {
	Total     uint64
	Notifiers []Notifier
}

type Sender added in v0.28.1

type Sender interface {
	// Send method is used to send notification for the
	// received message to the provided list of receivers.
	Send(to []string, msg protomfx.Message) error

	// ValidateContacts method is used to validate contacts
	// to which notifications will be sent.
	ValidateContacts(contacts []string) error
}

Sender represents an API for sending notification.

type Service

type Service interface {
	// CreateNotifiers creates notifiers for a certain group identified by the group ID.
	CreateNotifiers(ctx context.Context, token, groupID string, notifiers ...Notifier) ([]Notifier, error)

	// ListNotifiersByGroup retrieves data about a subset of notifiers
	// related to a certain group, identified by the provided group ID.
	ListNotifiersByGroup(ctx context.Context, token string, groupID string, pm apiutil.PageMetadata) (NotifiersPage, error)

	// ViewNotifier retrieves data about the notifier identified with the provided ID.
	ViewNotifier(ctx context.Context, token, id string) (Notifier, error)

	// UpdateNotifier updates the notifier identified by the provided ID.
	UpdateNotifier(ctx context.Context, token string, notifier Notifier) error

	// RemoveNotifiers removes notifiers identified with the provided IDs.
	RemoveNotifiers(ctx context.Context, token string, id ...string) error

	// RemoveNotifiersByGroup removes notifiers related to the specified group,
	// identified by the provided group ID.
	RemoveNotifiersByGroup(ctx context.Context, groupID string) error

	consumers.Consumer
}

Service represents a notification service. All methods that accept a token parameter use it to identify and authorize the user performing the operation.

func New

func New(idp uuid.IDProvider, sender Sender, notifierRepo NotifierRepository, things protomfx.ThingsServiceClient) Service

New instantiates the subscriptions service implementation.

Directories

Path Synopsis
api
Package smpp contains the domain concept definitions needed to support Mainflux SMS notifications.
Package smpp contains the domain concept definitions needed to support Mainflux SMS notifications.
Package smtp contains the domain concept definitions needed to support Mainflux SMTP notifications.
Package smtp contains the domain concept definitions needed to support Mainflux SMTP notifications.

Jump to

Keyboard shortcuts

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