|
|
|
@ -755,17 +755,15 @@ func prepareWebhooks(e Engine, repo *Repository, event HookEventType, p api.Payl
|
|
|
|
|
|
|
|
|
|
func (t *HookTask) deliver() {
|
|
|
|
|
t.IsDelivered = true
|
|
|
|
|
t.RequestInfo = &HookRequest{
|
|
|
|
|
Headers: map[string]string{},
|
|
|
|
|
}
|
|
|
|
|
t.ResponseInfo = &HookResponse{
|
|
|
|
|
Headers: map[string]string{},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
timeout := time.Duration(setting.Webhook.DeliverTimeout) * time.Second
|
|
|
|
|
|
|
|
|
|
var req *httplib.Request
|
|
|
|
|
if t.HTTPMethod == http.MethodPost {
|
|
|
|
|
switch t.HTTPMethod {
|
|
|
|
|
case "":
|
|
|
|
|
log.Info("HTTP Method for webhook %d empty, setting to POST as default", t.ID)
|
|
|
|
|
fallthrough
|
|
|
|
|
case http.MethodPost:
|
|
|
|
|
req = httplib.Post(t.URL)
|
|
|
|
|
switch t.ContentType {
|
|
|
|
|
case ContentTypeJSON:
|
|
|
|
@ -773,10 +771,10 @@ func (t *HookTask) deliver() {
|
|
|
|
|
case ContentTypeForm:
|
|
|
|
|
req.Param("payload", t.PayloadContent)
|
|
|
|
|
}
|
|
|
|
|
} else if t.HTTPMethod == http.MethodGet {
|
|
|
|
|
case http.MethodGet:
|
|
|
|
|
req = httplib.Get(t.URL).Param("payload", t.PayloadContent)
|
|
|
|
|
} else {
|
|
|
|
|
t.ResponseInfo.Body = fmt.Sprintf("Invalid http method: %v", t.HTTPMethod)
|
|
|
|
|
default:
|
|
|
|
|
log.Error("Invalid http method for webhook: [%d] %v", t.ID, t.HTTPMethod)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -792,10 +790,17 @@ func (t *HookTask) deliver() {
|
|
|
|
|
SetTLSClientConfig(&tls.Config{InsecureSkipVerify: setting.Webhook.SkipTLSVerify})
|
|
|
|
|
|
|
|
|
|
// Record delivery information.
|
|
|
|
|
t.RequestInfo = &HookRequest{
|
|
|
|
|
Headers: map[string]string{},
|
|
|
|
|
}
|
|
|
|
|
for k, vals := range req.Headers() {
|
|
|
|
|
t.RequestInfo.Headers[k] = strings.Join(vals, ",")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
t.ResponseInfo = &HookResponse{
|
|
|
|
|
Headers: map[string]string{},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
|
t.Delivered = time.Now().UnixNano()
|
|
|
|
|
if t.IsSucceed {
|
|
|
|
|