mirror of https://github.com/hrfee/jfa-go
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
988 B
39 lines
988 B
3 months ago
|
package main
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
"net/url"
|
||
|
"time"
|
||
|
|
||
|
"github.com/hrfee/jfa-go/common"
|
||
|
"github.com/hrfee/jfa-go/logger"
|
||
|
lm "github.com/hrfee/jfa-go/logmessages"
|
||
|
)
|
||
|
|
||
|
type WebhookSender struct {
|
||
|
httpClient *http.Client
|
||
|
timeoutHandler common.TimeoutHandler
|
||
|
log *logger.Logger
|
||
|
}
|
||
|
|
||
|
// SetTransport sets the http.Transport to use for requests. Can be used to set a proxy.
|
||
|
func (ws *WebhookSender) SetTransport(t *http.Transport) {
|
||
|
ws.httpClient.Transport = t
|
||
|
}
|
||
|
|
||
|
func NewWebhookSender(timeoutHandler common.TimeoutHandler, log *logger.Logger) *WebhookSender {
|
||
|
return &WebhookSender{
|
||
|
httpClient: &http.Client{
|
||
|
Timeout: 10 * time.Second,
|
||
|
},
|
||
|
timeoutHandler: timeoutHandler,
|
||
|
log: log,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (ws *WebhookSender) Send(uri string, payload any) (int, error) {
|
||
|
_, status, err := common.Req(ws.httpClient, ws.timeoutHandler, http.MethodPost, uri, payload, url.Values{}, nil, true)
|
||
|
ws.log.Printf(lm.WebhookRequest, uri, status, err)
|
||
|
return status, err
|
||
|
}
|