class PhoneSites::GsmArena::Manufacturer

Public Class Methods

all() click to toggle source
# File lib/phone_sites/gsm_arena/manufacturer.rb, line 52
def self.all
  url = manufacturers_url
  manufacturer_response.perform(url)
end
base_url() click to toggle source
# File lib/phone_sites/gsm_arena/manufacturer.rb, line 48
def self.base_url
  GsmArena::BASE_URL
end
manufacturer_response() click to toggle source
# File lib/phone_sites/gsm_arena/manufacturer.rb, line 36
def self.manufacturer_response
  GsmArena::ManufacturersListResponse.new
end
manufacturers_url() click to toggle source
# File lib/phone_sites/gsm_arena/manufacturer.rb, line 44
def self.manufacturers_url
  ::URI.join(GsmArena::BASE_URL, GsmArena::MANUFACTURERS_URL).to_s
end
models_response() click to toggle source
# File lib/phone_sites/gsm_arena/manufacturer.rb, line 40
def self.models_response
  PhoneSites::GsmArena::ModelListResponse.new
end

Public Instance Methods

build_url(page) click to toggle source
# File lib/phone_sites/gsm_arena/manufacturer.rb, line 31
def build_url(page)
  url_end = page.zero? ? url : url.gsub(".php", "-#{page}.php")
  URI.join(self.class.base_url, url_end).to_s
end
models() click to toggle source
# File lib/phone_sites/gsm_arena/manufacturer.rb, line 21
def models
  pages_count.times.inject([]) do |sum, i|
    sum.concat(self.class.models_response.perform(build_url(i)))
  end
end
pages_count() click to toggle source
# File lib/phone_sites/gsm_arena/manufacturer.rb, line 27
def pages_count
  (count.to_f / PhoneSites::GsmArena::PhoneModel::ITEMS_PER_PAGE).ceil
end
parse(data, attr_name) click to toggle source
# File lib/phone_sites/gsm_arena/manufacturer.rb, line 7
def parse(data, attr_name)
  case attr_name
  when :name
    data.children.select { |x| x.is_a?(Nokogiri::XML::Text) }.first.text
  when :url
    data.get_attribute("href")
  when :count
    data.children.select { |x| x.is_a?(Nokogiri::XML::Element) && x.name == "span" }
        .first.children.first.text.split(" ").first.to_i
  else
    raise NotImplementedError
  end
end