Module: Stratagem::Crawler::HtmlUtils

Included in:
Page, Session, SiteModel
Defined in:
lib/stratagem/crawler/html_utils.rb

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 (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