class Iconik::ITunes

Attributes

country[R]
scraping[R]

Public Class Methods

new(url, scraping: false, country: nil) click to toggle source
# File lib/iconik/i_tunes.rb, line 7
def initialize(url, scraping: false, country: nil)
  @scraping = scraping
  @url = url
  @country = country
end

Public Instance Methods

pluck_icon() click to toggle source
# File lib/iconik/i_tunes.rb, line 13
def pluck_icon
  country_params = country ? "&country=#{country}" : "&country=jp"
  get_url = scraping ? @url : "http://itunes.apple.com/lookup?id=#{pluck_app_id(url)}#{country_params}"
  @client = Iconik::HttpClient.new(get_url)
  scraping ? pluck_icon_for_scraping : pluck_icon_for_json
end

Private Instance Methods

pluck_app_id(url) click to toggle source
# File lib/iconik/i_tunes.rb, line 38
def pluck_app_id(url)
  md = url.match(/\/id([0-9]+)/)
  if md
    md[1]
  else
    raise Iconik::InvalidURIError.new
  end
end
pluck_icon_for_json() click to toggle source
# File lib/iconik/i_tunes.rb, line 32
def pluck_icon_for_json
  j = JSON.parse(client.response_body)
  raise Iconik::ResultCountZero if j['resultCount'] == 0
  j['results'][0]['artworkUrl60']
end
pluck_icon_for_scraping() click to toggle source
# File lib/iconik/i_tunes.rb, line 21
def pluck_icon_for_scraping
  r = client.response_body
  doc = Nokogiri::HTML.parse(r, nil, nil)
  elem = doc.xpath('//*[@id="left-stack"]/div[1]/a[1]/div/img')
  if elem.size > 0
    elem[0][:'src-swap']
  else
    raise Iconik::UnknownAppError
  end
end