Ebayr
Ebayr is a small gem which makes it a little easier to use the eBay Trading API
with Ruby.
Installation
Add this line to your application's Gemfile:
gem 'ebayr'
And then execute:
$ bundle
Or install it yourself as:
$ gem install ebayr
Ruby < 1.9
Older versions of ruby are no longer supported as of v0.0.10. To use ebayr
with Ruby 1.8, try version v0.0.9.
$ gem install ebayr -v '=0.0.9'
You may need to install an earlier version of activesupport in order to make
this work (since the dependency i18n does not support 1.8 after version
0.6.11). Your mileage may vary, and you probably should update your Ruby
version anyway.
Usage
To use the eBay Trading API, you'll need a developer keyset. Sign up at
http://developer.ebay.com if you haven't already done so.
Next, you'll need to require Ebayr, and tell it to use your keys. You will also
need to generate an RUName, and get the key for that. (This is all standard
stuff - look at the eBay developer docs for details).
require 'ebayr'
Ebayr.dev_id = "my-dev-id"
Ebayr.authorization_callback_url = "https://my-site/callback-url"
Ebayr.auth_token = "myverylongebayauthtoken"
Ebayr.app_id = "my-ebay-app-id"
Ebayr.cert_id = "my-ebay-cert-id"
Ebayr.ru_name = "my-ebay-ru-name"
Ebayr.sandbox = false
Now you're ready to make calls
Ebayr.call(:GeteBayOfficialTime)
session = Ebayr.call(:GetSessionID, :RuName => Ebayr.ru_name)[:SessionID]
To use an authorized user's key, pass in an auth_token
parameter
Ebayr.call(:GetOrders, :auth_token => "another-ebay-auth-token")
Use the input array to add to the body of the call
args = [{ :a => 1 }, { :a => [{:b => 1 }, { :b => 2 }] }]
Ebayr::Request.new(:Blah, :input => args)
Configuration
Ebayr will look for the following Ruby files, and load them once in order (if
they exist) when the module is evaluated:
- /etc/ebayr.conf
- /usr/local/etc/ebayr.conf
- ~/.ebayr.conf
- ./.ebayr.conf
You can put configuration code in there (such as the variable setting shown
above). The files should be plain old Ruby.
In a Ruby on Rails project, just create a file called
config/initializers/ebayr.rb (or something), and put the configuration there. Of
course, you should probably not check in these files, if you're using a public
repository.
Testing
When running test, you generally won't want to use up your API call-limit too
quickly, so it makes sense to stub out calls to the eBay API.
Ebayr test use Fakeweb to mimic the responses from eBay.
require 'ebayr'
require 'test/unit'
require 'fakeweb'
class MyTest < Test::Unit::TestCase
def setup
Ebayr.sandbox = true
end
def test_get_ebay_time
xml = <<-XML
<GeteBayOfficialTimeResponse>
<Ack>Success</Ack>
<Timestamp>blah</Timestamp>
</GeteBayOfficialTimeResponse>
XML
FakeWeb.register_uri(:post, Ebayr.uri, :body => xml)
time = SomeWrapperThatUsesEbayr.get_ebay_time
assert_equal 'blah', time
end
end
class SomeWrapperThatUsesEbayr
def self.get_ebay_time
hash = Ebayr.call(:GeteBayOfficialTime)
hash.timestamp
end
end
See './test/ebayr_test.rb' for more examples.
You need to remember to include Fakeweb in your Gemfile, or Ebayr will complain.
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Added some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
Credits
Thanks to the great contributing maintainers on GitHub, including:
- David DeGraw
- Eric McKenna
- Jason Schock
- Laurent Arnoud
- SpeerJ
- jogaco