class ChromeStoreSearch::App

Constants

APP_DETAIL_BASE_URL
DEFAULT_PARAMETER

Attributes

big_logo_url[RW]
description[RW]
id[RW]
images[RW]
languages[RW]
name[RW]
rating[RW]
short_description[RW]
site[RW]
size[RW]
small_logo_url[RW]
support_url[RW]
total_rating_count[RW]
total_users[RW]
updated_at[RW]
url[RW]
version[RW]
videos[RW]

Public Class Methods

new(id=nil) click to toggle source
# File lib/chrome_store_search/app.rb, line 17
def initialize(id=nil)
  update_detail_info(id) if id
end

Public Instance Methods

set_basic_info(app_item) click to toggle source
# File lib/chrome_store_search/app.rb, line 31
def set_basic_info(app_item)
  self.id = app_item[0]
  self.name = app_item[1]
  self.small_logo_url = app_item[3].encode("UTF-8")
  self.short_description = app_item[6]
  self.rating = app_item[12]
  self.total_rating_count = app_item[22].to_i
  self.total_users = app_item[23].gsub(",", "").to_i
  self.big_logo_url = app_item[25].encode("UTF-8")
  self.url = app_item[37]
end
update_detail_info(id, parmeter = DEFAULT_PARAMETER) click to toggle source
# File lib/chrome_store_search/app.rb, line 21
def update_detail_info(id, parmeter = DEFAULT_PARAMETER)
  @parmeter = DEFAULT_PARAMETER.merge(parmeter)
  conn = Faraday.new(:url => init_detail_url(id)) do |faraday|
    faraday.request  :url_encoded
    faraday.adapter  Faraday.default_adapter
  end
  res = conn.post '', {}
  parse_detail(res.body)
end

Private Instance Methods

init_detail_url(id) click to toggle source
# File lib/chrome_store_search/app.rb, line 45
def init_detail_url(id)
  detail_url = APP_DETAIL_BASE_URL
  detail_url << "hl=#{@parmeter[:hl]}"
  detail_url << "&pv=#{StringUtility.get_pv}"
  detail_url << "&id=#{id}"
  detail_url << "&container=CHROME"
end
parse_detail(app_detail_body) click to toggle source
# File lib/chrome_store_search/app.rb, line 53
def parse_detail(app_detail_body)
  detail_info = JSON.parse(StringUtility.gsub_continuation_commas(app_detail_body[4..-1]))[1][1]
  basic_info = detail_info[0]
  set_basic_info(basic_info)
  self.description = detail_info[1]
  self.site = detail_info[3]
  self.support_url = detail_info[5]
  self.version = detail_info[6]
  self.updated_at = detail_info[7]
  self.languages = detail_info[8]
  self.size = detail_info[-8]
  videos_images = detail_info[11]
  videos_images.each do |vi|
    if vi[18].include?("https://i.ytimg.com")
      self.videos = [] unless self.videos
      self.videos << vi[19]
    else
      self.images = [] unless self.images
      self.images << vi[17]
    end
  end
end