forked from lug/matterbridge
		
	
		
			
				
	
	
		
			35 lines
		
	
	
		
			734 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			734 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.NewRequest(http.MethodPost, url, bytes.NewReader(raw))
 | |
| 	if err != nil {
 | |
| 		return errors.Wrap(err, "failed new request")
 | |
| 	}
 | |
| 	req = req.WithContext(ctx)
 | |
| 	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{})
 | |
| }
 | 
