Documentation
¶
Index ¶
Constants ¶
const ApplyEvent = "apply"
const HttpKind = "http"
const SlackKind = "slack"
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ApplyResult ¶
type ApplyResult struct { Workspace string Repo models.Repo Pull models.PullRequest User models.User Success bool Directory string ProjectName string }
ApplyResult is the result of a terraform apply.
type Clients ¶ added in v0.33.0
type Clients struct { Slack SlackClient Http *HttpClient }
type DefaultSlackClient ¶
type DefaultSlackClient struct { Slack UnderlyingSlackClient Token string }
func (*DefaultSlackClient) AuthTest ¶
func (d *DefaultSlackClient) AuthTest() error
func (*DefaultSlackClient) PostMessage ¶
func (d *DefaultSlackClient) PostMessage(channel string, applyResult ApplyResult) error
func (*DefaultSlackClient) TokenIsSet ¶
func (d *DefaultSlackClient) TokenIsSet() bool
type HttpClient ¶ added in v0.33.0
HttpClient wraps http.Client allowing to add arbitrary Headers to a request.
type HttpWebhook ¶ added in v0.33.0
type HttpWebhook struct { Client *HttpClient WorkspaceRegex *regexp.Regexp BranchRegex *regexp.Regexp URL string }
HttpWebhook sends webhooks to any HTTP destination.
func (*HttpWebhook) Send ¶ added in v0.33.0
func (h *HttpWebhook) Send(_ logging.SimpleLogging, applyResult ApplyResult) error
Send sends the webhook to URL if workspace and branch matches their respective regex.
type MultiWebhookSender ¶
type MultiWebhookSender struct {
Webhooks []Sender
}
MultiWebhookSender sends multiple webhooks for each one it's configured for.
func NewMultiWebhookSender ¶
func NewMultiWebhookSender(configs []Config, clients Clients) (*MultiWebhookSender, error)
func (*MultiWebhookSender) Send ¶
func (w *MultiWebhookSender) Send(log logging.SimpleLogging, result ApplyResult) error
Send sends the webhook using its Webhooks.
type Sender ¶
type Sender interface { // Send sends the webhook (if the implementation thinks it should). Send(log logging.SimpleLogging, applyResult ApplyResult) error }
Sender sends webhooks.
type SlackClient ¶
type SlackClient interface { AuthTest() error TokenIsSet() bool PostMessage(channel string, applyResult ApplyResult) error }
SlackClient handles making API calls to Slack.
func NewSlackClient ¶
func NewSlackClient(token string) SlackClient
type SlackWebhook ¶
type SlackWebhook struct { Client SlackClient WorkspaceRegex *regexp.Regexp BranchRegex *regexp.Regexp Channel string }
SlackWebhook sends webhooks to Slack.
func NewSlack ¶
func NewSlack(wr *regexp.Regexp, br *regexp.Regexp, channel string, client SlackClient) (*SlackWebhook, error)
func (*SlackWebhook) Send ¶
func (s *SlackWebhook) Send(_ logging.SimpleLogging, applyResult ApplyResult) error
Send sends the webhook to Slack if workspace and branch matches their respective regex.
type UnderlyingSlackClient ¶
type UnderlyingSlackClient interface { AuthTest() (response *slack.AuthTestResponse, error error) GetConversations(conversationParams *slack.GetConversationsParameters) (channels []slack.Channel, nextCursor string, err error) PostMessage(channelID string, options ...slack.MsgOption) (string, string, error) }
UnderlyingSlackClient wraps the nlopes/slack.Client implementation so we can mock it during tests.