slack.go 777 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. }
  11. type slackfire struct {
  12. opt *OptionsSlack
  13. }
  14. var _ beaconfire.BeaconFire = &slackfire{}
  15. func NewSlackfire(opt *OptionsSlack) *slackfire {
  16. return &slackfire{
  17. opt: opt,
  18. }
  19. }
  20. func (c slackfire) Name() string {
  21. return SLACKFIRE_NAME
  22. }
  23. func (c *slackfire) Send(bp *beaconfire.BeaconParam) error {
  24. if len(bp.To) <= 0 {
  25. return beaconfire.ErrNoReceiver
  26. }
  27. s := slack.New(c.opt.AuthToken)
  28. for _, channel := range bp.To {
  29. if _, _, err := s.PostMessageContext(
  30. context.TODO(),
  31. channel,
  32. slack.MsgOptionText(bp.Content, false)); err != nil {
  33. return err
  34. }
  35. }
  36. return nil
  37. }