34 lines
721 B
Go
34 lines
721 B
Go
// +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{})
|
|
}
|