Webhook Logs show proper HTTP Method, and allow change HTTP method in form (#6953)
* Fix #6951 - logs show proper HTTP Method, and allow change HTTP method in form * enforce POST method for webhook * set default if method is empty
This commit is contained in:
parent
710245e81e
commit
5fb1ad7011
4 changed files with 18 additions and 11 deletions
|
@ -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 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue