// +build go1.13 package slack import ( "bytes" "context" "encoding/json" "net/http" "github.com/pkg/errors" ) func PostWebhookCustomHTTPContext(ctx context.Context, url string, httpClient *http.Client, msg *WebhookMessage) error { raw, err := json.Marshal(msg) if err != nil { return errors.Wrap(err, "marshal failed") } req, err := http.NewRequestWithContext(ctx, http.MethodPost, url, bytes.NewReader(raw)) if err != nil { return errors.Wrap(err, "failed new request") } req.Header.Set("Content-Type", "application/json") resp, err := httpClient.Do(req) if err != nil { return errors.Wrap(err, "failed to post webhook") } defer resp.Body.Close() return checkStatusCode(resp, discard{}) }