From 87dbdb83005f311b411e5f73519309dce3e798f5 Mon Sep 17 00:00:00 2001 From: bergquist Date: Mon, 5 Dec 2016 10:44:31 +0100 Subject: [PATCH] webhook: adds json content-type closes #6822 --- pkg/services/notifications/webhook.go | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/pkg/services/notifications/webhook.go b/pkg/services/notifications/webhook.go index de1303d8131..ac46a43f294 100644 --- a/pkg/services/notifications/webhook.go +++ b/pkg/services/notifications/webhook.go @@ -6,7 +6,6 @@ import ( "fmt" "io/ioutil" "net/http" - "time" "golang.org/x/net/context/ctxhttp" @@ -22,8 +21,10 @@ type Webhook struct { HttpMethod string } -var webhookQueue chan *Webhook -var webhookLog log.Logger +var ( + webhookQueue chan *Webhook + webhookLog log.Logger +) func initWebhookQueue() { webhookLog = log.New("notifications.webhook") @@ -47,24 +48,22 @@ func processWebhookQueue() { func sendWebRequestSync(ctx context.Context, webhook *Webhook) error { webhookLog.Debug("Sending webhook", "url", webhook.Url, "http method", webhook.HttpMethod) - client := &http.Client{ - Timeout: time.Duration(10 * time.Second), - } - if webhook.HttpMethod == "" { webhook.HttpMethod = http.MethodPost } request, err := http.NewRequest(webhook.HttpMethod, webhook.Url, bytes.NewReader([]byte(webhook.Body))) - if webhook.User != "" && webhook.Password != "" { - request.Header.Add("Authorization", util.GetBasicAuthHeader(webhook.User, webhook.Password)) - } - if err != nil { return err } - resp, err := ctxhttp.Do(ctx, client, request) + request.Header.Add("Content-Type", "application/json") + request.Header.Add("User-Agent", "Grafana") + if webhook.User != "" && webhook.Password != "" { + request.Header.Add("Authorization", util.GetBasicAuthHeader(webhook.User, webhook.Password)) + } + + resp, err := ctxhttp.Do(ctx, http.DefaultClient, request) if err != nil { return err } @@ -73,11 +72,11 @@ func sendWebRequestSync(ctx context.Context, webhook *Webhook) error { return nil } + defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { return err } - defer resp.Body.Close() webhookLog.Debug("Webhook failed", "statuscode", resp.Status, "body", string(body)) return fmt.Errorf("Webhook response status %v", resp.Status)