class TalkTalkTV::FilmPage

Attributes

body[R]
url[R]

Public Class Methods

from_url(url) click to toggle source
# File lib/talktalk_tv/film_page.rb, line 14
def self.from_url(url)
  response = HTTPClient.new.get(url)
  FilmPage.new(body: Nokogiri::HTML(response.body), url: url)
end
new(body:, url: nil) click to toggle source
# File lib/talktalk_tv/film_page.rb, line 7
def initialize(body:, url: nil)
  @body = body
  @url = url
end

Public Instance Methods

buy_price() click to toggle source
# File lib/talktalk_tv/film_page.rb, line 59
def buy_price
  select_price(body, '.c-retailButton--purchase .c-retailButton__price  > text()')
end
certificate() click to toggle source
# File lib/talktalk_tv/film_page.rb, line 45
def certificate
  match = body.css('.g-assetInfo li').map { |n| %r{CERT (.*)}.match(n.content) }.compact.first
  match && match[1]
end
film() click to toggle source
# File lib/talktalk_tv/film_page.rb, line 19
def film
  Film.new(
    title: title,
    url: url,
    image_url: image_url,
    release_year: release_year,
    certificate: certificate,
    running_time_in_minutes: running_time_in_minutes,
    rental_price: rental_price,
    buy_price: buy_price
  )
end
image_url() click to toggle source
# File lib/talktalk_tv/film_page.rb, line 36
def image_url
  body.css('.c-packShot noscript img').first.attributes['src'].value
end
release_year() click to toggle source
# File lib/talktalk_tv/film_page.rb, line 40
def release_year
  match = body.css('.g-assetInfo li').map { |n| %r{(\d{4})}.match(n.content) }.compact.first
  match && match[1].to_i
end
rental_price() click to toggle source
# File lib/talktalk_tv/film_page.rb, line 55
def rental_price
  select_price(body, '.c-retailButton--rental .c-retailButton__price  > text()')
end
running_time_in_minutes() click to toggle source
# File lib/talktalk_tv/film_page.rb, line 50
def running_time_in_minutes
  match = body.css('.g-assetInfo li').map { |n| %r{(\d+) HRS (\d+) MINS}.match(n.content) }.compact.first
  match && (match[1].to_i * 60 + match[2].to_i)
end
title() click to toggle source
# File lib/talktalk_tv/film_page.rb, line 32
def title
  body.css('.g-assetTitle').first.content.strip
end

Private Instance Methods

select_price(body, selector) click to toggle source
# File lib/talktalk_tv/film_page.rb, line 64
def select_price(body, selector)
  price_tag = body.css(selector).first
  price_tag && price_tag.text.strip
end