nikoksr/notify

View on GitHub
send.go

Summary

Maintainability
A
0 mins
Test Coverage
package notify

import (
    "context"
    "errors"

    "golang.org/x/sync/errgroup"
)

// send calls the underlying notification services to send the given subject and message to their respective endpoints.
func (n *Notify) send(ctx context.Context, subject, message string) error {
    if n.Disabled {
        return nil
    }
    if ctx == nil {
        ctx = context.Background()
    }

    var eg errgroup.Group
    for _, service := range n.notifiers {
        if service == nil {
            continue
        }

        eg.Go(func() error {
            return service.Send(ctx, subject, message)
        })
    }

    err := eg.Wait()
    if err != nil {
        err = errors.Join(ErrSendNotification, err)
    }

    return err
}

// Send calls the underlying notification services to send the given subject and message to their respective endpoints.
func (n *Notify) Send(ctx context.Context, subject, message string) error {
    return n.send(ctx, subject, message)
}

// Send calls the underlying notification services to send the given subject and message to their respective endpoints.
func Send(ctx context.Context, subject, message string) error {
    return std.Send(ctx, subject, message)
}