module Bestgems::Client::Trends
Public Instance Methods
daily_downloads(gem_name)
click to toggle source
# File lib/bestgems/client/trends.rb, line 11 def daily_downloads(gem_name) res = get "#{Bestgems.api_gems_endpoint}/#{gem_name}/daily_downloads.json" json2rb_obj(res) end
daily_ranking(gem_name)
click to toggle source
# File lib/bestgems/client/trends.rb, line 21 def daily_ranking(gem_name) res = get "#{Bestgems.api_gems_endpoint}/#{gem_name}/daily_ranking.json" json2rb_obj(res) end
growth(gem_name, base_days:5)
click to toggle source
return: growth point based on diff between total and daily ranking
in base_days(default: 5).
# File lib/bestgems/client/trends.rb, line 28 def growth(gem_name, base_days:5) total = total_ranking(gem_name) daily = daily_ranking(gem_name) total, daily = [total, daily].map do |data| data.take(base_days).inject(0) { |m, (_, rank)| rank ? m + rank : m } end (total - daily) / base_days end
json2rb_obj(data)
click to toggle source
# File lib/bestgems/client/trends.rb, line 37 def json2rb_obj(data) JSON.parse(data).inject({}) do |mem, h| date, val = h.values mem[date] = val mem end end
total_downloads(gem_name)
click to toggle source
# File lib/bestgems/client/trends.rb, line 6 def total_downloads(gem_name) res = get "#{Bestgems.api_gems_endpoint}/#{gem_name}/total_downloads.json" json2rb_obj(res) end
total_ranking(gem_name)
click to toggle source
# File lib/bestgems/client/trends.rb, line 16 def total_ranking(gem_name) res = get "#{Bestgems.api_gems_endpoint}/#{gem_name}/total_ranking.json" json2rb_obj(res) end