in pkg/provider/f5apm/f5apm.go [152:188]
func (ac *Client) getLoginForm(loginDetails *creds.LoginDetails) (url.Values, error) {
req, err := http.NewRequest("GET", loginDetails.URL, nil)
if err != nil {
return nil, errors.Wrap(err, "Error building get loging form request")
}
debugHTTPRequest(ac, req)
res, err := ac.client.Do(req)
if err != nil {
return nil, errors.Wrap(err, "Error retrieving login form")
}
debugHTTPResponse(ac, res)
doc, err := goquery.NewDocumentFromReader(res.Body)
if err != nil {
return nil, errors.Wrap(err, "Failed to build document from response")
}
authForm := url.Values{}
doc.Find("input").Each(func(i int, s *goquery.Selection) {
name, ok := s.Attr("name")
if !ok {
return
}
lname := strings.ToLower(name)
if strings.Contains(lname, "username") {
authForm.Add(name, loginDetails.Username)
} else if strings.Contains(lname, "password") {
authForm.Add(name, loginDetails.Password)
} else {
val, ok := s.Attr("value")
if !ok {
return
}
authForm.Add(name, val)
}
})
return authForm, nil
}