fix(backend): pass basic auth to the v2 API mapper

This commit is contained in:
Łukasz Mierzwa
2019-05-09 19:17:42 +01:00
parent 479a4e76fd
commit abaf9f1d47
2 changed files with 28 additions and 0 deletions
@@ -20,3 +20,22 @@ func (hrt *headersRoundTripper) RoundTrip(r *http.Request) (*http.Response, erro
}
return hrt.inner.RoundTrip(r)
}
func SetAuth(inner http.RoundTripper, username string, password string) http.RoundTripper {
return &authRoundTripper{
inner: inner,
Username: username,
Password: password,
}
}
type authRoundTripper struct {
inner http.RoundTripper
Username string
Password string
}
func (art *authRoundTripper) RoundTrip(r *http.Request) (*http.Response, error) {
r.SetBasicAuth(art.Username, art.Password)
return art.inner.RoundTrip(r)
}
+9
View File
@@ -18,12 +18,21 @@ import (
func newClient(uri string, headers map[string]string, httpTransport http.RoundTripper) *client.Alertmanager {
u, _ := url.Parse(uri)
transport := httptransport.New(u.Host, path.Join(u.Path, "/api/v2"), []string{u.Scheme})
if httpTransport != nil {
transport.Transport = mapper.SetHeaders(httpTransport, headers)
} else {
transport.Transport = mapper.SetHeaders(transport.Transport, headers)
}
if u.User.Username() != "" {
username := u.User.Username()
password, _ := u.User.Password()
transport.Transport = mapper.SetAuth(transport.Transport, username, password)
}
c := client.New(transport, nil)
return c
}