class MadCart::Store::Spree
Constants
- ORDERS_PER_PAGE
- PRODUCTS_PER_PAGE
Public Instance Methods
products_count()
click to toggle source
# File lib/mad_cart/store/spree.rb, line 17 def products_count (parse_response { connection.get('products.json') })["total_count"] end
valid?()
click to toggle source
# File lib/mad_cart/store/spree.rb, line 13 def valid? valid_by_path?('orders.json') end
Private Instance Methods
api_url_for(store_domain)
click to toggle source
# File lib/mad_cart/store/spree.rb, line 99 def api_url_for(store_domain) "http://#{store_domain}/api/" end
create_connection(args={})
click to toggle source
# File lib/mad_cart/store/spree.rb, line 103 def create_connection(args={}) Faraday.new(DEFAULT_CONNECTION_OPTIONS.merge(:url => api_url_for(args[:store_url]))) do |connection| connection.response :json connection.adapter Faraday.default_adapter connection.headers['X-Spree-Token'] = args[:api_key] end end
for_each(source, items_key, &block)
click to toggle source
# File lib/mad_cart/store/spree.rb, line 87 def for_each(source, items_key, &block) response = send(source, { :page => 1 }) items = response[items_key.to_s] pages_count = response['pages'] (2..pages_count).each do |page| items += send(source, { :page => page })[items_key.to_s] end items.each(&block) end
get_customer_hashes()
click to toggle source
# File lib/mad_cart/store/spree.rb, line 64 def get_customer_hashes orders = [] for_each(:make_order_request, :orders) do |r| orders << { order_number: r["number"], user_email: r["email"] } end orders.reverse.select{ |r| r[:user_email].present? }.uniq{ |r| r[:user_email] }.map do |r| c = parse_response { connection.get("orders/#{ r[:order_number] }.json") } if c['email'] { first_name: c['bill_address'].try(:[], 'firstname'), last_name: c['bill_address'].try(:[], 'lastname'), email: c['email'], id: c['email'] } end end.compact end
get_products(_options={})
click to toggle source
# File lib/mad_cart/store/spree.rb, line 33 def get_products(_options={}) product_hashes = [] for_each(:make_product_request, :products) do |r| product_hashes << r end product_hashes.map do |product| master = product.try(:[], "master") master_variant = product.try(:[], "variants").try{ |variants| variants.find{ |variant| variant['is_master'] } } images = (master || master_variant).try(:[], "images") if images.present? image = images.first product = product.merge({ :image_square_url => connection.build_url(image["product_url"] || image["attachment_url"]).to_s, :image_url => connection.build_url(image["large_url"] || image["attachment_url"]).to_s }) end product = product.merge({ :url => connection.build_url("/products/#{ product["slug"] || product['permalink'] }").to_s, }) product end.select do |product| product[:image_url].present? end end
make_order_request(params={})
click to toggle source
# File lib/mad_cart/store/spree.rb, line 23 def make_order_request(params={}) params = params.reverse_merge({ :page => 1, :per_page => ORDERS_PER_PAGE }) parse_response { connection.get('orders.json', params) } end
make_product_request(params={})
click to toggle source
# File lib/mad_cart/store/spree.rb, line 28 def make_product_request(params={}) params = params.reverse_merge({ :page => 1, :per_page => PRODUCTS_PER_PAGE }) parse_response { connection.get('products.json', params) } end