diff options
Diffstat (limited to 'vendor/github.com/nlopes/slack/webhooks.go')
-rw-r--r-- | vendor/github.com/nlopes/slack/webhooks.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/vendor/github.com/nlopes/slack/webhooks.go b/vendor/github.com/nlopes/slack/webhooks.go new file mode 100644 index 00000000..870a8d8b --- /dev/null +++ b/vendor/github.com/nlopes/slack/webhooks.go @@ -0,0 +1,33 @@ +package slack + +import ( + "github.com/pkg/errors" + "net/http" + "bytes" + "encoding/json" +) + +type WebhookMessage struct { + Text string `json:"text,omitempty"` + Attachments []Attachment `json:"attachments,omitempty"` +} + +func PostWebhook(url string, msg *WebhookMessage) error { + raw, err := json.Marshal(msg) + + if err != nil { + return errors.Wrap(err, "marshal failed") + } + + response, err := http.Post(url, "application/json", bytes.NewReader(raw)); + + if err != nil { + return errors.Wrap(err, "failed to post webhook") + } + + if response.StatusCode != http.StatusOK { + return statusCodeError{Code: response.StatusCode, Status: response.Status} + } + + return nil +} |