Skip to content
/ ebay Public
forked from codyfauser/ebay

Ruby interface to the eBay XML Trading API

License

Notifications You must be signed in to change notification settings

veeqo/ebay

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

217 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eBay API Client for Ruby

Build Status

The api implements the ebay Trading API. To get a list of calls look here: http://developer.ebay.com/DevZone/XML/docs/Reference/eBay/index.html

or

lib/ebay/api_methods.rb

Some key features:

  • Simple and easy to use Ruby implementation.
  • Ability to return a raw response for calls that return an extremely large response such as GetCategoriesRequest.
  • Up-to-date with the eBay API, see /lib/ebay/schema/version.rb
  • Months of usage in a production environment.
  • Support for Platform Notifications baked right in.

For examples of many common tasks see the examples folder. Start with get_ebay_time.rb. You need to get a develper account and place a config.rb (see template) in the examples directory.

API Version and Schema Updates

Please follow this steps whenever you need to update API version and corresponding scheme.

rake schema:update
rake classes:generate
rake test

Maintainers Note: Each schema update must be tagged schema-vXXX where XXX is schema version.

Installation

Add this line to your application's Gemfile:

gem 'ebay', github: 'veeqo/ebay'

And then execute:

$ bundle

Request events

The gem fires ASN event on every request to eBay API.

Default event name is ebay_trading_api.request.details.

Event payload is a Hash which contains the following data:

  • :api_endpoint -- call name, i.e. 'GeteBayOfficialTime'
  • :api_version -- API schema version, i.e. '1211'
  • :method -- request method, always 'post' as no other is used
  • :request_context -- a Hash with additional request context, by default contains site_id,
  • :response (optional) -- contains a response object type of Ebay::Response; exists only when the request reached eBay API.
  • :exception (optional) -- contains exception data when the exception raised on reaching eBay API, i.e. request timeout; format is [exception_class_name, exception_message] (see ActiveSupport documentation on this),
  • :exception_object (optional) -- contains original exception object in case of exception (see ActiveSupport documentation on this).

Example successful payload:

{
  api_endpoint: 'GeteBayOfficialTime',
  api_version: '1211',
  method: 'post',
  request_context: { site_id: 3 },
  response: #<Ebay::Response:0x0000557285b0f9d0
    @body=
      "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<GeteBayOfficialTimeResponse xmlns=\"urn:ebay:apis:eBLBaseComponents\"><Timestamp>2006-07-05T14:23:03.399Z</Timestamp><Ack>Success</Ack><Version>467</Version><Build>e467_core_Bundled_3145691_R1</Build></GeteBayOfficialTimeResponse>\n",
    @code=200,
    @headers={}>
}

Example payload with exception:

{
  api_endpoint: 'GeteBayOfficialTime',
  api_version: '1211',
  method: 'post',
  request_context: { site_id: 3 },
  exception: ['Errno::ECONNRESET', 'Connection reset by peer - SSL_connect'],
  exception_object: #<Errno::ECONNRESET: Connection reset by peer - SSL_connect>
}

Events configuration

Event name

Event name can be configured:

Ebay::Api.configure do |config|
  config.request_event_name = 'custom_event_name'
end

Request context

request_context can be extended via the API client initializer:

ebay_api = Ebay::Api.new ebay_auth_token: auth_token, site_id: 3, request_context: { foo: :bar }

or set for the existing client object:

ebay_api = Ebay::Api.new ebay_auth_token: auth_token, site_id: 3
ebay_api.request_context = { foo: :bar }

so the request_context in the payload will contain passed data:

{
  # ...
  request_context: { site_id: 3, foo: :bar }
}

Subscription

As long as the event as default ASN events, subscription logic is the same as for any other ASN event.

ActiveSupport::Notifications.subscribe(Ebay::Api.request_event_name) do |name, start_time, end_time, _, payload|
  puts payload
end

Testing

Run wwtd --parallel to test with appraisals. Run rake to test with current Gemfile.

Credits

This is a fork of original ebay gem by codyfauser. It has commits applied from other forks:

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/veeqo/ebay

About

Ruby interface to the eBay XML Trading API

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 99.8%
  • HTML 0.2%