Module: Stratagem::Crawler::HtmlUtils
Constant Summary collapse
- INPUT_TEXT =
['text', 'password', 'hidden']
- INPUT_BUTTON =
['button', 'submit', 'reset', 'image', 'src']
- INPUT_TOGGLE =
['checkbox']
- INPUT_RADIO =
['radio']
Instance Method Summary collapse
Instance Method Details
#find_login_form(document) ⇒ Object
11 12 13 14 15 16 17 18 19 |
# File 'lib/stratagem/crawler/html_utils.rb', line 11 def find_login_form(document) possibilities = parse_forms(document).select {|form| # this maps to the form action, not the controller action form.action =~ /log[-]*in/ || form.action =~ /sign[-]*in/ || !form.inputs.find {|input| input.type == 'password' }.nil? }.sort {|a,b| a.inputs.size <=> b.inputs.size } possibilities.first end |
#parse_forms(document) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/stratagem/crawler/html_utils.rb', line 21 def parse_forms(document) document.xpath('//form').map do |form_tag| form = Form.new() form.action = form_load_attribute(form_tag, 'action') form.method = form_load_attribute(form_tag, 'method', false) || 'post' (form_tag/'input').each do |input_tag| form_add_input(form, input_tag) end (form_tag/'textarea').each do |input_tag| form_add_input(form, input_tag) end (form_tag/'select').each do |select_tag| form_add_select(form, select_tag) end form end end |