class Shopify::AppStore
Public Class Methods
find(handle, sort_by = :newest)
click to toggle source
# File lib/shopify_appstore.rb, line 36 def self.find(handle, sort_by = :newest) top(sort_by).each { |a| return a if a[:handle] == handle } nil end
top(sort_by = :newest)
click to toggle source
# File lib/shopify_appstore.rb, line 7 def self.top(sort_by = :newest) raise "Unknown sort value" unless [ :newest, :popular, :highest_rated ].include?(sort_by) sort_by = sort_by.to_s.gsub('_', '+') values = [] page = 1 begin begin url = "http://apps.shopify.com/shopify_applications/filter?sortby=#{sort_by}&page=#{page}" page += 1 doc = Nokogiri::HTML(open(url)) apps = doc.css('li.app') apps.each do |app| handle = app.css('a').first[:href].sub('/shopify_applications/', '').gsub('/', '') value = { :handle => handle, :name => app.css('div.app-info strong').first.text, :rank => values.size + 1, :url => "http://apps.shopify.com/#{handle}/", :image => app.css('img').first[:src], :description => app.css('p.description').first.text.strip, } values.push(value) end end while apps.size == 15 rescue end values end