class MercadolibreApi::Sellers::Products::Queries::MostSold
Public Instance Methods
execute()
click to toggle source
# File lib/mercadolibre_api/sellers/products/queries/most_sold.rb, line 12 def execute results = search_uris.map do |uri| response = Net::HTTP.get_response(uri) JSON.parse(response.body, symbolize_names: true)[:results] end results.flatten.map { |r| MercadolibreApi::Products::Entities::Product.represent(r).as_json } end
Private Instance Methods
base_uri(offset: 0)
click to toggle source
# File lib/mercadolibre_api/sellers/products/queries/most_sold.rb, line 36 def base_uri(offset: 0) return URI("#{sites_api_url}/#{site_code}/search?seller_id=#{seller_id}") unless offset.positive? URI("#{sites_api_url}/#{site_code}/search?seller_id=#{seller_id}&offset=#{offset}") end
search_uris()
click to toggle source
# File lib/mercadolibre_api/sellers/products/queries/most_sold.rb, line 23 def search_uris response = Net::HTTP.get_response(base_uri) response_data = JSON.parse(response.body, symbolize_names: true) return [] unless response.code == '200' total_products = response_data.dig(:paging, :total) product_limit = response_data.dig(:paging, :limit) total_calls = (total_products / product_limit).to_i 0.upto(total_calls).map { |offset_ratio| base_uri(offset: (product_limit * offset_ratio)) } end
sites_api_url()
click to toggle source
# File lib/mercadolibre_api/sellers/products/queries/most_sold.rb, line 42 def sites_api_url 'https://api.mercadolibre.com/sites' end