class Ebay::Browse

The Browse API allows your buyers to search eBay items by keyword and category. It also allows them to view and add items to their eBay shopping cart.

@see developer.ebay.com/api-docs/buy/browse/overview.html

Attributes

access_token[R]

@return [String]

campaign_id[R]

@return [String]

country[R]

@return [String,nil]

market_id[R]

@return [String,nil]

reference_id[R]

@return [String,nil]

zip[R]

@return [String,nil]

Public Class Methods

new(access_token:, campaign_id:, reference_id: nil, country: nil, zip: nil, market_id: 'EBAY_US') click to toggle source

Returns a Browse API request instance

@param [String] access_token @param [String] campaign_id @param [String] reference_id @param [String] country @param [String] zip @param [String] market_id

# File lib/ebay/browse.rb, line 50
def initialize(access_token:, campaign_id:, reference_id: nil, country: nil, zip: nil, market_id: 'EBAY_US')
  @campaign_id = campaign_id
  @reference_id = reference_id
  @country = country
  @zip = zip
  @access_token = access_token
  @market_id = market_id
end

Public Instance Methods

add_item() click to toggle source
# File lib/ebay/browse.rb, line 131
def add_item
  raise 'not implemented'
end
check_compatibility(item_id, marketplace_id, compatibility_properties) click to toggle source

Retrieves the details of the individual items in an item group

@param [String] item_id @param [String] marketplace_id @return [HTTP::Response]

# File lib/ebay/browse.rb, line 122
def check_compatibility(item_id, marketplace_id, compatibility_properties)
  url = build_url('item', item_id, 'check_compatibility')
  headers = build_headers
  headers.update('X-EBAY-C-MARKETPLACE-ID' => marketplace_id, 'CONTENT-TYPE' => 'application/json')
  body = JSON.dump('compatibilityProperties' => compatibility_properties)

  http.headers(headers).post(url, body: body)
end
get_item(item_id, params = {}) click to toggle source

Retrieves the details of a specific item

@param [String] item_id @param [Hash] params @return [HTTP::Response]

# File lib/ebay/browse.rb, line 87
def get_item(item_id, params = {})
  url = build_url('item', item_id)
  params = params.merge(item_id: item_id)

  http.headers(build_headers).get(url, params: params)
end
get_item_by_legacy_id(legacy_item_id, params = {}) click to toggle source

Retrieves the details of a specific item using its legacy item ID

@param [String] legacy_item_id @param [Hash] params @return [HTTP::Response]

# File lib/ebay/browse.rb, line 99
def get_item_by_legacy_id(legacy_item_id, params = {})
  url = build_url('item', 'get_item_by_legacy_id')
  params = params.merge(legacy_item_id: legacy_item_id)

  http.headers(build_headers).get(url, params: params)
end
get_items_by_item_group(item_group_id) click to toggle source

Retrieves the details of the individual items in an item group

@param [String] item_group_id @return [HTTP::Response]

# File lib/ebay/browse.rb, line 110
def get_items_by_item_group(item_group_id)
  url = build_url('item', 'get_items_by_item_group')
  params = { item_group_id: item_group_id }

  http.headers(build_headers).get(url, params: params)
end
get_shopping_cart() click to toggle source
# File lib/ebay/browse.rb, line 135
def get_shopping_cart
  raise 'not implemented'
end
remove_item() click to toggle source
# File lib/ebay/browse.rb, line 139
def remove_item
  raise 'not implemented'
end
search_by_image(image, params = {}) click to toggle source

Searches for eBay items based on a image and retrieves their summaries

@param [File] image @param [Hash] params @return [HTTP::Response]

# File lib/ebay/browse.rb, line 73
def search_by_image(image, params = {})
  url = build_url('item_summary', 'search_by_image')
  headers = build_headers.update('CONTENT-TYPE' => 'application/json')
  encoded_string = Base64.encode64(image.read)
  body = JSON.dump(image: encoded_string)

  http.headers(headers).post(url, params: params, body: body)
end
update_quantity() click to toggle source
# File lib/ebay/browse.rb, line 143
def update_quantity
  raise 'not implemented'
end

Private Instance Methods

build_contextual_location() click to toggle source
# File lib/ebay/browse.rb, line 165
def build_contextual_location
  string = { 'country' => country, 'zip' => zip }.compact.map { |kv| kv.join('=') }.join(',')
  CGI.escape(string) if string
end
build_ebay_enduser_context() click to toggle source
# File lib/ebay/browse.rb, line 159
def build_ebay_enduser_context
  { 'affiliateCampaignId' => campaign_id,
    'affiliateReferenceId' => reference_id,
    'contextualLocation' => build_contextual_location }.compact.map { |kv| kv.join('=') }.join(',')
end
build_headers() click to toggle source
# File lib/ebay/browse.rb, line 153
def build_headers
  { 'AUTHORIZATION' => "Bearer #{access_token}",
    'X-EBAY-C-MARKETPLACE-ID' => market_id,
    'X-EBAY-C-ENDUSERCTX' => build_ebay_enduser_context }
end
build_url(*resources, operation) click to toggle source
# File lib/ebay/browse.rb, line 149
def build_url(*resources, operation)
  [endpoint, *resources, operation].join('/')
end