summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/slack-go/slack/webhooks.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/slack-go/slack/webhooks.go')
-rw-r--r--vendor/github.com/slack-go/slack/webhooks.go24
1 files changed, 24 insertions, 0 deletions
diff --git a/vendor/github.com/slack-go/slack/webhooks.go b/vendor/github.com/slack-go/slack/webhooks.go
index 97346e1c..15097f03 100644
--- a/vendor/github.com/slack-go/slack/webhooks.go
+++ b/vendor/github.com/slack-go/slack/webhooks.go
@@ -1,7 +1,10 @@
package slack
import (
+ "bytes"
"context"
+ "encoding/json"
+ "fmt"
"net/http"
)
@@ -31,3 +34,24 @@ func PostWebhookContext(ctx context.Context, url string, msg *WebhookMessage) er
func PostWebhookCustomHTTP(url string, httpClient *http.Client, msg *WebhookMessage) error {
return PostWebhookCustomHTTPContext(context.Background(), url, httpClient, msg)
}
+
+func PostWebhookCustomHTTPContext(ctx context.Context, url string, httpClient *http.Client, msg *WebhookMessage) error {
+ raw, err := json.Marshal(msg)
+ if err != nil {
+ return fmt.Errorf("marshal failed: %w", err)
+ }
+
+ req, err := http.NewRequestWithContext(ctx, http.MethodPost, url, bytes.NewReader(raw))
+ if err != nil {
+ return fmt.Errorf("failed new request: %w", err)
+ }
+ req.Header.Set("Content-Type", "application/json")
+
+ resp, err := httpClient.Do(req)
+ if err != nil {
+ return fmt.Errorf("failed to post webhook: %w", err)
+ }
+ defer resp.Body.Close()
+
+ return checkStatusCode(resp, discard{})
+}