in pkg/provider/googleapps/googleapps.go [612:656]
func extractInputsByFormQuery(doc *goquery.Document, formQuery string) (url.Values, string, error) {
formData := url.Values{}
var actionAttr string
query := fmt.Sprintf("form%s", formQuery)
currentURL := doc.Url.String()
//get action url
foundForms := doc.Find(query)
if len(foundForms.Nodes) == 0 {
return formData, "", fmt.Errorf("could not find form with query %q", query)
}
foundForms.Each(func(i int, s *goquery.Selection) {
action, ok := s.Attr("action")
if !ok {
return
}
actionAttr = action
})
actionURL, err := generateFullURLIfRelative(actionAttr, currentURL)
if err != nil {
return formData, "", errors.Wrap(err, "error getting action URL")
}
query = fmt.Sprintf("form%s", formQuery)
// extract form data to passthrough
doc.Find(query).Find("input").Each(func(i int, s *goquery.Selection) {
name, ok := s.Attr("name")
if !ok {
return
}
val, ok := s.Attr("value")
if !ok {
return
}
logger.Debugf("name: %s value: %s", name, val)
formData.Add(name, val)
})
return formData, actionURL, nil
}