func()

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
}