class GooglePlay

Constants

BASE_URL
SORT_ORDERS
VERSION

Public Class Methods

new() click to toggle source
# File lib/google-play.rb, line 13
def initialize
  @client = HTTPClient.new
end

Public Instance Methods

app(id) click to toggle source
# File lib/google-play.rb, line 17
def app(id)
  res = @client.get("#{GooglePlay::BASE_URL}/store/apps/details", {:id => id})
  raise GooglePlay::App::NotFoundError.new("'#{id}' is not found") if res.status_code == 404
  parse_app(res.content)
end
reviews(id, opts = {}) { |r| ... } click to toggle source
# File lib/google-play.rb, line 23
def reviews(id, opts = {})
  page       = opts[:page] || :all
  sort_order = opts[:sort_order] || :newest

  if page.is_a?(Integer)
    return fetch_reviews(id, page, sort_order)
  else
    all_reviews = []
    i = 0
    loop do
      reviews = fetch_reviews(id, i, sort_order)
      return all_reviews if (all_reviews.size > 0) and (all_reviews.last.id == reviews.last.id)
      if block_given?
        reviews.each do |r|
          return all_reviews unless yield(r) 
          all_reviews << r
        end
      else
        all_reviews += reviews
      end
      i += 1
    end
    return all_reviews
  end
end

Private Instance Methods

fetch_reviews(id, page, sort_order) click to toggle source
# File lib/google-play.rb, line 50
def fetch_reviews(id, page, sort_order)
  sort_order_num = GooglePlay::SORT_ORDERS.find_index { |s| sort_order == s } || 0
  res = @client.post("#{GooglePlay::BASE_URL}/store/getreviews", {
    :id              => id,
    :pageNum         => page,
    :reviewSortOrder => sort_order_num,
    :reviewType      => 1
  })
  html = JSON.parse(res.content.split("\n")[2] + ']')[0][2]
  raise GooglePlay::App::NotFoundError.new("'#{id}' is not found") if html.size == 0
  parse_review(html)
end