slack.go 803 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package providers
  2. import (
  3. "context"
  4. "git.wenlab.co/joe/beaconfire"
  5. "github.com/slack-go/slack"
  6. )
  7. const SLACKFIRE_NAME = "slackfire"
  8. type OptionsSlack struct {
  9. AuthToken string
  10. To []string
  11. }
  12. type slackfire struct {
  13. opt *OptionsSlack
  14. }
  15. var _ beaconfire.BeaconFire = &slackfire{}
  16. func NewSlackfire(opt *OptionsSlack) *slackfire {
  17. return &slackfire{
  18. opt: opt,
  19. }
  20. }
  21. func (c slackfire) Name() string {
  22. return SLACKFIRE_NAME
  23. }
  24. func (c *slackfire) Send(bp *beaconfire.BeaconParam) error {
  25. if len(c.opt.To) <= 0 {
  26. return beaconfire.ErrNoReceiver
  27. }
  28. s := slack.New(c.opt.AuthToken)
  29. for _, channel := range c.opt.To {
  30. if _, _, err := s.PostMessageContext(
  31. context.TODO(),
  32. channel,
  33. slack.MsgOptionText(bp.Content, false)); err != nil {
  34. return err
  35. }
  36. }
  37. return nil
  38. }