Listing 1. ebay-lookup.rb

#!/usr/bin/ruby

require 'net/http'
require 'rexml/document'

if ARGV.length == 0
  puts "#{$0}: You must enter at least one argument."
  exit
end

output = ""

# Iterate through each of our arguments
ARGV.each do |query_string|

  output << "Searching for: #{query_string}\n"

  # Put together an eBay parameter string
  ebay_params = {'CallName' => 'GetSearchResults',
    'RequestToken' => 'XXX',
    'RequestUserId' => 'YYY',
    'Schema' => 1,
    'ItemTypeFilter' => 3,
    'SearchInDescription' => 1,
    'StoreSearch' => 3,
    'DetailLevel' => 3,
    'Query' => query_string}.map {|key,value|
"#{key}=#{value}"}.join("&")

  # Ask eBay what it knows about our query_string
  ebay_response = Net::HTTP.get_response('rest.api.ebay.com',
                                           '/restapi?' << ebay_params)

  xml = REXML::Document.new(ebay_response.body)

  # Get basic information
  how_many_matches =
xml.root.elements["PaginationResult/TotalNumberOfEntries"].text

  output << "Number of matches: #{how_many_matches}\n"

end

# Show everyone what we've learned
puts output