messenger

package module
v0.0.10 Latest Latest
Warning

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

Go to latest
Published: Apr 16, 2026 License: BSD-3-Clause Imports: 12 Imported by: 2

README

go-messenger

Opinionated Go package providing interfaces and implementations for delivering to-from-subject-body style messages.

Documentation

Documentation is incomplete at this time.

Tools

$> make cli 
go build -mod vendor -ldflags="-s -w" -o bin/message cmd/message/main.go
message

Command-line tool for delivering messages using or more delivery agents.

$> ./bin/message -h
Command-line tool for delivering messages using or more delivery agents.
Usage:
	 ./bin/message [options] message
Valid options are:
  -agent-uri value
    	One or more known sfomuseum/go-messenger.DeliveryAgent URIs. Valid options are: beeep://, email-null://, email-smtp://, email-stdout://, null://, slack://, stdout://
  -from string
    	The name or address of the person or process sending the message.
  -subject string
    	The subject of the message.
  -to value
    	One or more addresses where messages should be delivered.

If the only message input is "-" then data will be read from STDIN.

For example:

$> echo "HELLO WORLD" | ./bin/message -from aaron -to aaron -agent-uri stdout:// -subject testing -
HELLO WORLD

2024/10/06 17:09:19 INFO Message delivered to=aaron

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AgentSchemes added in v0.0.4

func AgentSchemes() []string

Schemes returns the list of schemes that have been registered.

func RegisterDeliveryAgent

func RegisterDeliveryAgent(ctx context.Context, scheme string, init_func DeliveryAgentInitializationFunc) error

RegisterDeliveryAgent registers 'scheme' as a key pointing to 'init_func' in an internal lookup table used to create new `DeliveryAgent` instances by the `NewDeliveryAgent` method.

func RegisterEmailSchemes added in v0.0.5

func RegisterEmailSchemes(ctx context.Context) error

Types

type BeeepDeliveryAgent added in v0.0.4

type BeeepDeliveryAgent struct {
	DeliveryAgent
}

func (*BeeepDeliveryAgent) DeliverMessage added in v0.0.4

func (a *BeeepDeliveryAgent) DeliverMessage(ctx context.Context, msg *Message) error

type DeliveryAgent

type DeliveryAgent interface {
	DeliverMessage(context.Context, *Message) error
}

func NewBeeepDeliveryAgent added in v0.0.4

func NewBeeepDeliveryAgent(ctx context.Context, uri string) (DeliveryAgent, error)

func NewDeliveryAgent

func NewDeliveryAgent(ctx context.Context, uri string) (DeliveryAgent, error)

NewDeliveryAgent returns a new `DeliveryAgent` instance configured by 'uri'. The value of 'uri' is parsed as a `url.URL` and its scheme is used as the key for a corresponding `DeliveryAgentInitializationFunc` function used to instantiate the new `DeliveryAgent`. It is assumed that the scheme (and initialization function) have been registered by the `RegisterDeliveryAgent` method.

func NewEmailDeliveryAgent

func NewEmailDeliveryAgent(ctx context.Context, uri string) (DeliveryAgent, error)

func NewMultiDeliveryAgent

func NewMultiDeliveryAgent(ctx context.Context, agents ...DeliveryAgent) (DeliveryAgent, error)

func NewMultiDeliveryAgentWithURIs

func NewMultiDeliveryAgentWithURIs(ctx context.Context, agent_uris ...string) (DeliveryAgent, error)

func NewNullDeliveryAgent

func NewNullDeliveryAgent(ctx context.Context, uri string) (DeliveryAgent, error)

func NewSlackDeliveryAgent

func NewSlackDeliveryAgent(ctx context.Context, uri string) (DeliveryAgent, error)

func NewSlogDeliveryAgent added in v0.0.10

func NewSlogDeliveryAgent(ctx context.Context, uri string) (DeliveryAgent, error)

func NewStdoutDeliveryAgent

func NewStdoutDeliveryAgent(ctx context.Context, uri string) (DeliveryAgent, error)

type DeliveryAgentInitializationFunc

type DeliveryAgentInitializationFunc func(ctx context.Context, uri string) (DeliveryAgent, error)

DeliveryAgentInitializationFunc is a function defined by individual delivery_agent package and used to create an instance of that delivery_agent

type EmailDeliveryAgent

type EmailDeliveryAgent struct {
	DeliveryAgent
	// contains filtered or unexported fields
}

func (*EmailDeliveryAgent) DeliverMessage

func (agent *EmailDeliveryAgent) DeliverMessage(ctx context.Context, msg *Message) error

type Message

type Message struct {
	To      string
	From    string
	Subject string
	Body    string
}

type MultiDeliveryAgent

type MultiDeliveryAgent struct {
	DeliveryAgent
	// contains filtered or unexported fields
}

func (*MultiDeliveryAgent) DeliverMessage

func (a *MultiDeliveryAgent) DeliverMessage(ctx context.Context, msg *Message) error

type NullDeliveryAgent

type NullDeliveryAgent struct {
	DeliveryAgent
}

func (*NullDeliveryAgent) DeliverMessage

func (a *NullDeliveryAgent) DeliverMessage(ctx context.Context, msg *Message) error

type SlackDeliveryAgent

type SlackDeliveryAgent struct {
	DeliveryAgent
	// contains filtered or unexported fields
}

func (*SlackDeliveryAgent) DeliverMessage

func (a *SlackDeliveryAgent) DeliverMessage(ctx context.Context, msg *Message) error

type SlogDeliveryAgent added in v0.0.10

type SlogDeliveryAgent struct {
	DeliveryAgent
	// contains filtered or unexported fields
}

func (*SlogDeliveryAgent) DeliverMessage added in v0.0.10

func (a *SlogDeliveryAgent) DeliverMessage(ctx context.Context, msg *Message) error

type StdoutDeliveryAgent

type StdoutDeliveryAgent struct {
	DeliveryAgent
}

func (*StdoutDeliveryAgent) DeliverMessage

func (a *StdoutDeliveryAgent) DeliverMessage(ctx context.Context, msg *Message) error

Directories

Path Synopsis
app
cmd
message command

Jump to

Keyboard shortcuts

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