in internal/output/webhook/webhook.go [78:110]
func (o *Output) Write(b []byte) (int, error) {
req, err := http.NewRequest(http.MethodPost, o.opts.Addr, bytes.NewReader(b))
if err != nil {
return 0, err
}
if o.opts.ContentType != "" {
req.Header.Set("Content-Type", o.opts.ContentType)
}
if o.opts.Username != "" && o.opts.Password != "" {
req.SetBasicAuth(o.opts.Username, o.opts.Password)
}
if err = setHeaders(req, o.opts.Headers); err != nil {
return 0, err
}
resp, err := o.client.Do(req)
if err != nil {
return 0, err
}
var buf bytes.Buffer
io.Copy(&buf, resp.Body)
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
if buf.Len() == 0 {
buf.WriteString("no body")
}
return 0, fmt.Errorf("http post to webhook failed with http status %v %v: %s", resp.StatusCode, resp.Status, &buf)
}
return len(b), nil
}