Module: LivingSocialApi::DailyDealBuilder

Defined in:
lib/livingsocial/daily_deal_builder.rb

Constant Summary collapse

BASE_URL =
"http://livingsocial.com"

Class Method Summary collapse

Class Method Details

.build_for_city(city) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/livingsocial/daily_deal_builder.rb', line 13

def self.build_for_city(city)
  page_for(city) do |doc|
    doc.css(".cities-deal").collect do |deal|
      new_from_html(deal)
    end
  end
end

.get_deal_price(html) ⇒ Object



37
38
39
# File 'lib/livingsocial/daily_deal_builder.rb', line 37

def self.get_deal_price(html)
  html.css('.deal-price').text.strip
end

.get_description(html) ⇒ Object



29
30
31
# File 'lib/livingsocial/daily_deal_builder.rb', line 29

def self.get_description(html)
  html.css('.deal-title p').text.strip
end

.get_image_url(html) ⇒ Object



21
22
23
# File 'lib/livingsocial/daily_deal_builder.rb', line 21

def self.get_image_url(html)
  html.css('.deal-image img').attribute('src').value.strip
end

.get_original_price(html) ⇒ Object



33
34
35
# File 'lib/livingsocial/daily_deal_builder.rb', line 33

def self.get_original_price(html)
  html.css('.deal-strike').text.strip
end

.get_title(html) ⇒ Object



25
26
27
# File 'lib/livingsocial/daily_deal_builder.rb', line 25

def self.get_title(html)
  html.css('.deal-title h3 a').text.strip
end

.get_url(html) ⇒ Object



41
42
43
# File 'lib/livingsocial/daily_deal_builder.rb', line 41

def self.get_url(html)
  BASE_URL + html.css('.deal-image a').attribute('href').value.strip
end

.load_page_for(city) ⇒ Object



5
6
7
# File 'lib/livingsocial/daily_deal_builder.rb', line 5

def self.load_page_for(city)
  Nokogiri::HTML(open("#{BASE_URL}/cities/#{city}"))
end

.new_from_html(html) ⇒ Object



45
46
47
48
49
50
51
52
53
# File 'lib/livingsocial/daily_deal_builder.rb', line 45

def self.new_from_html(html)
  image          = get_image_url(html)
  title          = get_title(html)
  description    = get_description(html)
  original_price = get_original_price(html)
  deal_price     = get_deal_price(html)
  url            = get_url(html)
  DailyDeal.new(image, title, description, original_price, deal_price, url)
end

.page_for(city) {|load_page_for(city)| ... } ⇒ Object

Yields:



9
10
11
# File 'lib/livingsocial/daily_deal_builder.rb', line 9

def self.page_for(city)
  yield(load_page_for(city))
end