Module: XP

Defined in:
lib/xp.rb,
lib/user_agents.rb

Constant Summary collapse

USER_AGENTS =
{
  ipad: 'Mozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B176 Safari/7534.48.3',
  iphone: 'Mozilla/5.0 (iPhone; CPU OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53',
  mac_firefox: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14',
  mac_safari: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14'
}

Instance Method Summary collapse

Instance Method Details

#css(selector) ⇒ Object



27
28
29
# File 'lib/xp.rb', line 27

def css(selector)
  self.to_nokogiri.css(selector).to_html.to_nokogiri
end

#download(location: 'downloads', name: nil) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/xp.rb', line 18

def download(location: 'downloads', name: nil)
  FileUtils.mkdir_p location

  filename = (name || basename).to_s + extension
  File.open("#{location}/#{filename}", 'wb') do |f|
    f.write open(self).read
  end
end

#page_source(user_agent_alias: :mac_firefox, user_agent: nil) ⇒ Object



13
14
15
16
# File 'lib/xp.rb', line 13

def page_source(user_agent_alias: :mac_firefox, user_agent: nil)
  user_agent ||= USER_AGENTS[user_agent_alias]
  open(self, "User-Agent" => user_agent).read
end

#to_nokogiriObject



7
8
9
10
11
# File 'lib/xp.rb', line 7

def to_nokogiri
  source = url? ? self.page_source : self

  Nokogiri(source)
end

#xpath(selector) ⇒ Object



31
32
33
# File 'lib/xp.rb', line 31

def xpath(selector)
  self.to_nokogiri.xpath(selector).to_html.to_nokogiri
end