Documentation
¶
Overview ¶
Package notifier provides functionality to send notifications.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // ErrEmptyTelegramToken is returned when the telegram token is empty. ErrEmptyTelegramToken = errors.New("telegram token is empty") // ErrEmptyTelegramChatID is returned when the telegram chat id is empty. ErrEmptyTelegramChatID = errors.New("telegram chat id is empty") // ErrEmptyMessage is returned when the message is empty. ErrEmptyMessage = errors.New("message is empty") // ErrInvalidToken is returned when the telegram token is invalid. ErrInvalidToken = errors.New("invalid token") // ErrEmptyNotifiers is returned when the notifiers' list is empty. ErrEmptyNotifiers = errors.New("notifiers list is empty") // ErrInvalidSeverity is returned when the severity is invalid. ErrInvalidSeverity = errors.New("invalid severity") )
Functions ¶
Types ¶
type Metadata ¶
type Metadata struct {
AppName string
InstanceName string
Commit string
BuildDate string
Extra map[string]string
}
Metadata contains information about the application.
type Notifier ¶
type Notifier interface {
// Alert sends a message to the notifier.
Alert(ctx context.Context, severity Severity, message string) error
// Kind returns the notifier kind.
Kind() string
}
Notifier declares notifier contract.
Example ¶
ExampleNotifier shows how to create a new notifier with a list of notifiers and send a message.
package main
import (
"bytes"
"context"
"fmt"
"os"
"time"
"github.com/obalunenko/notifier"
)
const (
// Test telegram credentials.
testTGTokenEnv = "TEST_TELEGRAM_TOKEN"
testTGChatIDEnv = "TEST_TELEGRAM_CHAT_ID"
)
// ExampleNotifier shows how to create a new notifier with a list of notifiers and send a message.
func main() {
ctx := context.Background()
var buf bytes.Buffer
// Declare list of notifiers.
var notifiers []notifier.Notifier
// Create a new io.Writer notifier to visualize alerts.
wn, err := notifier.NewIOWriterNotifier(&buf)
if err != nil {
// Handle error in your way.
panic(err)
}
notifiers = append(notifiers, wn)
// Create a new telegram notifier if token and chatID env set.
if token, chatID := os.Getenv(testTGTokenEnv), os.Getenv(testTGChatIDEnv); token != "" && chatID != "" {
var tgn notifier.Notifier
tgn, err = notifier.NewTelegram(token, chatID)
if err != nil {
// Handle error in your way.
panic(err)
}
notifiers = append(notifiers, tgn)
}
// Add the notifier to the list of notifiers.
n, err := notifier.NewMultiNotifier(notifiers...)
if err != nil {
// Handle error in your way.
panic(err)
}
// Add notifier metadata to context.
ctx = notifier.ContextWithMetadata(ctx, notifier.Metadata{
AppName: "test_app",
InstanceName: "test_instance",
Commit: "test_commit",
BuildDate: time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC).Format(time.DateTime),
})
// Send alert.
err = n.Alert(ctx, notifier.SeverityWarning, "[NOTIFIER_TEST]: example message")
if err != nil {
// Handle error in your way.
panic(err)
}
fmt.Println(buf.String())
}
Output: <b>⚠️ Severity:</b> WARNING <b>Alert Message:</b> [NOTIFIER_TEST]: example message <b>Meta:</b> • app_name: test_app • build_date: 2020-01-01 00:00:00 • commit: test_commit • instance_name: test_instance
func NewIOWriterNotifier ¶
NewIOWriterNotifier creates a new notifier that writes messages to io.Writer. Useful for testing. If kind is not provided, "iowriter" is used.
func NewMultiNotifier ¶
NewMultiNotifier returns a new multiNotifier notifier. Useful when it's needed to send messages to multiple telegram chats or other notifiers.
func NewTelegram ¶
NewTelegram returns a new telegram notifier.
type Severity ¶
type Severity int
Severity represents the severity of an alert.
const ( // SeverityInfo represents an info alert. SeverityInfo Severity // INFO // SeverityWarning represents a warning alert. SeverityWarning // WARNING // SeverityCritical represents a critical alert. SeverityCritical // CRITICAL )
Click to show internal directories.
Click to hide internal directories.