ebay_request 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.rubocop.yml +23 -0
- data/.travis.yml +4 -0
- data/Gemfile +5 -0
- data/README.md +124 -0
- data/Rakefile +7 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/config/sites.yml +321 -0
- data/ebay_request.gemspec +46 -0
- data/lib/ebay_request.rb +77 -0
- data/lib/ebay_request/auth.rb +35 -0
- data/lib/ebay_request/base.rb +115 -0
- data/lib/ebay_request/business_policies.rb +39 -0
- data/lib/ebay_request/config.rb +59 -0
- data/lib/ebay_request/error.rb +9 -0
- data/lib/ebay_request/finding.rb +36 -0
- data/lib/ebay_request/response.rb +40 -0
- data/lib/ebay_request/shopping.rb +36 -0
- data/lib/ebay_request/site.rb +30 -0
- data/lib/ebay_request/trading.rb +83 -0
- data/lib/ebay_request/version.rb +4 -0
- data/lib/omniauth/strategies/ebay.rb +80 -0
- metadata +208 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: cb76a7e262a07c379dc602b7ba074c7086c96849692329aae220974794313ee7
|
4
|
+
data.tar.gz: 0603e8fb221798bb65f8341327a88fb1d093c057d9d2cdacc46c6c986221869a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b5a67b1c80e93578cf03037368281883bdb66f144e6c69f642cebc34bd0f77bc886c2cfbd8f981179f5571682c1d2962a5cf43fb325368491302694c0fafcb03
|
7
|
+
data.tar.gz: 04b18a44284c64a8633b4e0010226fde1605227ee91c7a44e10b31625537bacd74371857641c493b0fc3fad995701d2d74abd21b4a97bd29a3be3830f44f3b9e
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.rubocop.yml
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
AllCops:
|
2
|
+
TargetRubyVersion: 2.3
|
3
|
+
Exclude:
|
4
|
+
- bin/**/*
|
5
|
+
|
6
|
+
Documentation:
|
7
|
+
Enabled: false
|
8
|
+
|
9
|
+
Style/StringLiterals:
|
10
|
+
EnforcedStyle: double_quotes
|
11
|
+
|
12
|
+
Style/ClassAndModuleChildren:
|
13
|
+
EnforcedStyle: compact
|
14
|
+
|
15
|
+
Style/TrailingCommaInLiteral:
|
16
|
+
Description: 'Checks for trailing comma in array and hash literals.'
|
17
|
+
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas'
|
18
|
+
Enabled: true
|
19
|
+
EnforcedStyleForMultiline: comma
|
20
|
+
|
21
|
+
Metrics/BlockLength:
|
22
|
+
Exclude:
|
23
|
+
- spec/**/*
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
# EbayRequest
|
2
|
+
|
3
|
+
eBay XML API request interface.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'ebay_request'
|
11
|
+
```
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
Or install it yourself as:
|
18
|
+
|
19
|
+
$ gem install ebay_request
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
```ruby
|
24
|
+
# config/initializers/ebay_request.rb
|
25
|
+
|
26
|
+
secrets = Rails.application.secrets.ebay
|
27
|
+
raise "Set eBay credentials in secrets.yml" if secrets.blank?
|
28
|
+
|
29
|
+
EbayRequest.configure do |config|
|
30
|
+
config.appid = secrets["appid"]
|
31
|
+
config.certid = secrets["certid"]
|
32
|
+
config.devid = secrets["devid"]
|
33
|
+
config.runame = secrets["runame"]
|
34
|
+
config.sandbox = secrets["sandbox"]
|
35
|
+
end
|
36
|
+
|
37
|
+
EbayRequest.logger = Logger.new("ebay-request.log")
|
38
|
+
EbayRequest.warn_logger = Logger.new("ebay-request-warn.log") # Not logged otherwise
|
39
|
+
EbayRequest.json_logger = GraylogProxy.new # Should receive #notify
|
40
|
+
```
|
41
|
+
|
42
|
+
```ruby
|
43
|
+
EbayRequest::Finding.new.response("findItemsByKeywords", keywords: "abc")
|
44
|
+
EbayRequest::Shopping.new.response("GetSingleItem", ItemID: "252261544055")
|
45
|
+
EbayRequest::Shopping.new(token: "...").response("AddItem", ...some data...)
|
46
|
+
```
|
47
|
+
|
48
|
+
## Using multiple key sets
|
49
|
+
|
50
|
+
```ruby
|
51
|
+
EbayRequest.configure do |config|
|
52
|
+
config.appid = secrets["appid"]
|
53
|
+
# And so on
|
54
|
+
# ...
|
55
|
+
end
|
56
|
+
|
57
|
+
EbayRequest.configure(:sandbox) do |config|
|
58
|
+
config.appid = secrets["appid"]
|
59
|
+
# ...
|
60
|
+
config.sandbox = true
|
61
|
+
end
|
62
|
+
|
63
|
+
EbayRequest::Finding.new(env: :sandbox).response("findItemsByKeywords", keywords: "abc")
|
64
|
+
```
|
65
|
+
|
66
|
+
## OmniAuth strategy
|
67
|
+
|
68
|
+
If gem is configured somewhere at initializer (shown above):
|
69
|
+
|
70
|
+
```ruby
|
71
|
+
Rails.application.config.middleware.use OmniAuth::Builder do
|
72
|
+
provider :ebay
|
73
|
+
end
|
74
|
+
```
|
75
|
+
|
76
|
+
If you want to use just strategy you can pass all the required options as `#provider` args ([see source](https://github.com/gzigzigzeo/ebay_request/blob/master/lib/omniauth/strategies/ebay.rb#L4)).
|
77
|
+
|
78
|
+
This strategy is for Auth'n'auth method only. For OAuth method see the [omniauth-ebay-oauth](https://github.com/evilmartians/omniauth-ebay-oauth) gem.
|
79
|
+
|
80
|
+
|
81
|
+
## Working with old XML and new REST API simultaneously
|
82
|
+
|
83
|
+
If you're planning to work with new eBay REST APIs, you will find that another kind of access tokens are required for working with these APIs.
|
84
|
+
|
85
|
+
Tokens obtained with Auth'n'auth only usable with eBay XML API, while tokens obtained with OAuth only usable with eBay REST API.
|
86
|
+
|
87
|
+
However, you can use new OAuth tokens to access old APIs by providing an access token in (not yet) documented HTTP header `X-EBAY-API-IAF-TOKEN`. This gem has builtin support for this.
|
88
|
+
|
89
|
+
To use it:
|
90
|
+
|
91
|
+
1. Replace OmniAuth strategy from this gem to the strategy from the [omniauth-ebay-oauth](https://github.com/evilmartians/omniauth-ebay-oauth) gem.
|
92
|
+
|
93
|
+
Most probably you will need to store and use both Auth'n'auth and OAuth tokens for a while to provide a smooth transition.
|
94
|
+
|
95
|
+
2. For working with REST API and their tokens add the [ebay_api](https://github.com/nepalez/ebay_api/) gem to your application.
|
96
|
+
|
97
|
+
3. Construct an `EbayAPI::TokenManager` instance with all OAuth tokens.
|
98
|
+
|
99
|
+
See https://github.com/nepalez/ebay_api/#working-with-access-tokens
|
100
|
+
|
101
|
+
Any object that responds to `refresh!` method and returns actual token from the `access_token` method will be fine too.
|
102
|
+
|
103
|
+
4. Pass this token manager object in `:iaf_token_manager` option into the XML API constructor:
|
104
|
+
|
105
|
+
```ruby
|
106
|
+
EbayRequest::Trading.new(
|
107
|
+
token: auth_n_auth_token,
|
108
|
+
iaf_token_manager: iaf_token_manager,
|
109
|
+
siteid: 0,
|
110
|
+
)
|
111
|
+
```
|
112
|
+
|
113
|
+
You can pass both old token in `:token` option and new token manager in `:iaf_token_manager` option. Old tokens will be used if the token manager is `nil`.
|
114
|
+
|
115
|
+
|
116
|
+
## Development
|
117
|
+
|
118
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
119
|
+
|
120
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
121
|
+
|
122
|
+
## Contributing
|
123
|
+
|
124
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/gzigzigzeo/ebay_request.
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "ebay_request"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
data/config/sites.yml
ADDED
@@ -0,0 +1,321 @@
|
|
1
|
+
---
|
2
|
+
- globalid: EBAY-US
|
3
|
+
id: 0
|
4
|
+
name: US
|
5
|
+
code: US
|
6
|
+
currency: USD
|
7
|
+
language: en
|
8
|
+
domain: ebay.com
|
9
|
+
metric: imperial
|
10
|
+
country: US
|
11
|
+
shipping_zones: [US, Americas, NorthAmerica]
|
12
|
+
free_placement: 50
|
13
|
+
max_insertion_fee: 0.3
|
14
|
+
free_pictures: 12
|
15
|
+
subtitle_fee: 3.0
|
16
|
+
gtc_available: true
|
17
|
+
min_fixed_price: 0.99 # https://pages.ebay.com/help/sell/fixed-price.html
|
18
|
+
|
19
|
+
- globalid: EBAY-RU
|
20
|
+
id: 215
|
21
|
+
name: Russia
|
22
|
+
code: RU
|
23
|
+
currency: RUB
|
24
|
+
language: ru
|
25
|
+
domain: ebay.com
|
26
|
+
metric: metric
|
27
|
+
country: RU
|
28
|
+
shipping_zones: [RU, Russia, RussianFederation]
|
29
|
+
gtc_available: true
|
30
|
+
free_placement: 1000000
|
31
|
+
max_insertion_fee: 0
|
32
|
+
free_pictures: 12
|
33
|
+
picture_fee: 0
|
34
|
+
subtitle_fee: 0
|
35
|
+
min_fixed_price: 0.99 # https://pages.ebay.com/help/sell/fixed-price.html
|
36
|
+
|
37
|
+
- globalid: EBAY-AT
|
38
|
+
id: 16
|
39
|
+
name: Austria
|
40
|
+
code: AT
|
41
|
+
currency: EUR
|
42
|
+
language: de
|
43
|
+
domain: ebay.at
|
44
|
+
metric: metric
|
45
|
+
country: AT
|
46
|
+
min_fixed_price: # no limit at https://pages.ebay.com.at/help/sell/fixed-price.html
|
47
|
+
|
48
|
+
- globalid: EBAY-AU
|
49
|
+
id: 15
|
50
|
+
name: Australia
|
51
|
+
code: AU
|
52
|
+
currency: AUD
|
53
|
+
language: en
|
54
|
+
domain: ebay.com.au
|
55
|
+
metric: metric
|
56
|
+
country: AU
|
57
|
+
shipping_zones: [AU, Oceania]
|
58
|
+
free_placement: 0
|
59
|
+
max_insertion_fee: 3.5
|
60
|
+
free_pictures: 12
|
61
|
+
subtitle_fee: 2
|
62
|
+
gtc_available: true
|
63
|
+
min_fixed_price: # no limit at https://pages.ebay.com.au/help/sell/fixed-price.html
|
64
|
+
|
65
|
+
- globalid: EBAY-CH
|
66
|
+
id: 193
|
67
|
+
name: Switzerland
|
68
|
+
code: CH
|
69
|
+
currency: CHF
|
70
|
+
language: de
|
71
|
+
domain: ebay.ch
|
72
|
+
metric: metric
|
73
|
+
country: CH
|
74
|
+
min_fixed_price: # no limit at https://pages.ebay.ch/help/sell/fixed-price.html
|
75
|
+
|
76
|
+
- globalid: EBAY-DE
|
77
|
+
id: 77
|
78
|
+
name: Germany
|
79
|
+
code: DE
|
80
|
+
currency: EUR
|
81
|
+
language: de
|
82
|
+
domain: ebay.de
|
83
|
+
metric: metric
|
84
|
+
country: DE
|
85
|
+
shipping_zones: [DE, Europe, EuropeanUnion]
|
86
|
+
free_placement: 50
|
87
|
+
max_insertion_fee: 0.35
|
88
|
+
free_pictures: 12
|
89
|
+
picture_fee: nil
|
90
|
+
subtitle_fee: 0.5
|
91
|
+
quantity_limits: 9
|
92
|
+
gtc_available: true
|
93
|
+
min_fixed_price: # no limit at https://pages.ebay.de/help/sell/fixed-price.html
|
94
|
+
|
95
|
+
- globalid: EBAY-ENCA
|
96
|
+
id: 2
|
97
|
+
name: Canada
|
98
|
+
code: CA
|
99
|
+
currency: CAD
|
100
|
+
language: en
|
101
|
+
domain: ebay.ca
|
102
|
+
metric: metric
|
103
|
+
country: CA
|
104
|
+
shipping_zones: [CA, Americas, NorthAmerica]
|
105
|
+
free_placement: 50
|
106
|
+
max_insertion_fee: 0.3
|
107
|
+
free_pictures: 12
|
108
|
+
subtitle_fee: 1.5
|
109
|
+
quantity_limits: 9
|
110
|
+
gtc_available: true
|
111
|
+
min_fixed_price: 0.99 # https://pages.ebay.ca/help/sell/fixed-price.html
|
112
|
+
|
113
|
+
- globalid: EBAY-ES
|
114
|
+
id: 186
|
115
|
+
name: Spain
|
116
|
+
code: ES
|
117
|
+
currency: EUR
|
118
|
+
language: es
|
119
|
+
domain: ebay.es
|
120
|
+
metric: metric
|
121
|
+
country: ES
|
122
|
+
shipping_zones: [ES, Europe, EuropeanUnion]
|
123
|
+
free_placement: 50
|
124
|
+
max_insertion_fee: 0.35
|
125
|
+
free_pictures: 12
|
126
|
+
subtitle_fee: 0.41
|
127
|
+
gtc_available: false
|
128
|
+
min_fixed_price: 0.99 # https://pages.ebay.es/help/sell/fixed-price.html
|
129
|
+
|
130
|
+
- globalid: EBAY-FR
|
131
|
+
id: 71
|
132
|
+
name: France
|
133
|
+
code: FR
|
134
|
+
currency: EUR
|
135
|
+
language: fr
|
136
|
+
domain: ebay.fr
|
137
|
+
metric: metric
|
138
|
+
country: FR
|
139
|
+
shipping_zones: [FR, Europe, EuropeanUnion]
|
140
|
+
free_placement: 50
|
141
|
+
max_insertion_fee: 0.35
|
142
|
+
free_pictures: 1
|
143
|
+
picture_fee: 0.13
|
144
|
+
subtitle_fee: 0.42
|
145
|
+
gtc_available: false
|
146
|
+
min_fixed_price: 1.00 # https://pages.ebay.fr/help/sell/fixed-price.html
|
147
|
+
|
148
|
+
- globalid: EBAY-FRBE
|
149
|
+
id: 23
|
150
|
+
name: Belgium_French
|
151
|
+
code: BEFR
|
152
|
+
currency: EUR
|
153
|
+
language: fr
|
154
|
+
domain: ebay.be
|
155
|
+
metric: metric
|
156
|
+
country: BE
|
157
|
+
min_fixed_price: 1.00 # https://pages.befr.ebay.be/help/sell/fixed-price.html
|
158
|
+
|
159
|
+
- globalid: EBAY-FRCA
|
160
|
+
id: 210
|
161
|
+
name: CanadaFrench
|
162
|
+
code: CAFR
|
163
|
+
currency: CAD
|
164
|
+
language: fr
|
165
|
+
domain: ebay.ca
|
166
|
+
metric: metric
|
167
|
+
country: CA
|
168
|
+
shipping_zones: [CA, Americas, NorthAmerica]
|
169
|
+
free_placement: 50
|
170
|
+
max_insertion_fee: 0.3
|
171
|
+
free_pictures: 12
|
172
|
+
subtitle_fee: 3.0
|
173
|
+
quantity_limits: 9
|
174
|
+
gtc_available: true
|
175
|
+
min_fixed_price: 0.99 # https://pages.ebay.ca/help/sell/fixed-price.html
|
176
|
+
|
177
|
+
- globalid: EBAY-GB
|
178
|
+
id: 3
|
179
|
+
name: UK
|
180
|
+
code: UK
|
181
|
+
currency: GBP
|
182
|
+
language: en
|
183
|
+
domain: ebay.co.uk
|
184
|
+
metric: metric
|
185
|
+
country: GB
|
186
|
+
shipping_zones: [GB, Europe]
|
187
|
+
free_placement: 0
|
188
|
+
max_insertion_fee: 0.26
|
189
|
+
free_pictures: 12
|
190
|
+
subtitle_fee: 1
|
191
|
+
gtc_available: true
|
192
|
+
min_fixed_price: 0.99 # for GBP at https://pages.ebay.co.uk/help/sell/fixed-price.html
|
193
|
+
|
194
|
+
- globalid: EBAY-HK
|
195
|
+
id: 201
|
196
|
+
name: HongKong
|
197
|
+
code: HK
|
198
|
+
currency: HKD
|
199
|
+
language: zh
|
200
|
+
domain: ebay.com.hk
|
201
|
+
metric: metric
|
202
|
+
country: HK
|
203
|
+
min_fixed_price: 1.00 # https://pages.ebay.com.hk/help/sell/fixed-price.html
|
204
|
+
|
205
|
+
- globalid: EBAY-IE
|
206
|
+
id: 205
|
207
|
+
name: Ireland
|
208
|
+
code: IE
|
209
|
+
currency: EUR
|
210
|
+
language: en
|
211
|
+
domain: ebay.ie
|
212
|
+
metric: metric
|
213
|
+
country: IE
|
214
|
+
min_fixed_price: 1.00 # for EUR at https://pages.ebay.ie/help/sell/fixed-price.html
|
215
|
+
|
216
|
+
- globalid: EBAY-IN
|
217
|
+
id: 203
|
218
|
+
name: India
|
219
|
+
code: IN
|
220
|
+
currency: INR
|
221
|
+
language: en
|
222
|
+
domain: ebay.in
|
223
|
+
metric: metric
|
224
|
+
country: IN
|
225
|
+
min_fixed_price: 1.00 # https://pages.ebay.in/help/sell/fixed-price.html
|
226
|
+
|
227
|
+
- globalid: EBAY-IT
|
228
|
+
id: 101
|
229
|
+
name: Italy
|
230
|
+
code: IT
|
231
|
+
currency: EUR
|
232
|
+
language: it
|
233
|
+
domain: ebay.it
|
234
|
+
metric: metric
|
235
|
+
country: IT
|
236
|
+
shipping_zones: [IT, Europe, EuropeanUnion]
|
237
|
+
free_placement: 50
|
238
|
+
max_insertion_fee: 0.35
|
239
|
+
free_pictures: 1
|
240
|
+
picture_fee: 0.12
|
241
|
+
subtitle_fee: 0.41
|
242
|
+
gtc_available: false
|
243
|
+
min_fixed_price: 1.00 # https://pages.ebay.it/help/sell/fixed-price.html
|
244
|
+
|
245
|
+
- globalid: EBAY-MOTOR
|
246
|
+
id: 100
|
247
|
+
name: US Motors
|
248
|
+
code: MOTOR
|
249
|
+
currency: USD
|
250
|
+
language: en
|
251
|
+
domain: ebay.com/motors
|
252
|
+
metric: imperial
|
253
|
+
country: US
|
254
|
+
shipping_zones: [US, Americas, NorthAmerica]
|
255
|
+
min_fixed_price: 0.99 # https://pages.ebay.com/motors/help/sell/fixed-price.html
|
256
|
+
|
257
|
+
- globalid: EBAY-MY
|
258
|
+
id: 207
|
259
|
+
name: Malaysia
|
260
|
+
code: MY
|
261
|
+
currency: MYR
|
262
|
+
language: en
|
263
|
+
domain: ebay.com.my
|
264
|
+
metric: metric
|
265
|
+
country: MY
|
266
|
+
min_fixed_price: 0.99 # for USD at https://pages.ebay.com.my/help/sell/fixed-price.html
|
267
|
+
|
268
|
+
- globalid: EBAY-NL
|
269
|
+
id: 146
|
270
|
+
name: Netherlands
|
271
|
+
code: NL
|
272
|
+
currency: EUR
|
273
|
+
language: nl
|
274
|
+
domain: ebay.nl
|
275
|
+
metric: metric
|
276
|
+
country: NL
|
277
|
+
min_fixed_price: # no limit at https://pages.ebay.nl/help/sell/fixed-price.html
|
278
|
+
|
279
|
+
- globalid: EBAY-NLBE
|
280
|
+
id: 123
|
281
|
+
name: Belgium_Dutch
|
282
|
+
code: BENL
|
283
|
+
currency: EUR
|
284
|
+
language: de
|
285
|
+
domain: ebay.nl
|
286
|
+
metric: metric
|
287
|
+
country: BE
|
288
|
+
min_fixed_price: # no limit at https://pages.benl.ebay.be/help/sell/fixed-price.html
|
289
|
+
|
290
|
+
- globalid: EBAY-PH
|
291
|
+
id: 211
|
292
|
+
name: Philippines
|
293
|
+
code: PH
|
294
|
+
currency: PHP
|
295
|
+
language: en
|
296
|
+
domain: ebay.ph
|
297
|
+
metric: metric
|
298
|
+
country: PH
|
299
|
+
min_fixed_price: 0.99 # for USD at https://pages.ebay.ph/help/sell/fixed-price.html
|
300
|
+
|
301
|
+
- globalid: EBAY-PL
|
302
|
+
id: 212
|
303
|
+
name: Poland
|
304
|
+
code: PL
|
305
|
+
currency: PLN
|
306
|
+
language: pl
|
307
|
+
domain: ebay.pl
|
308
|
+
metric: metric
|
309
|
+
country: PL
|
310
|
+
min_fixed_price: # no limit at https://pages.ebay.pl/help/sell/fixed-price.html
|
311
|
+
|
312
|
+
- globalid: EBAY-SG
|
313
|
+
id: 216
|
314
|
+
name: Singapore
|
315
|
+
code: SG
|
316
|
+
currency: SGD
|
317
|
+
language: en
|
318
|
+
domain: ebay.com.sg
|
319
|
+
metric: metric
|
320
|
+
country: SG
|
321
|
+
min_fixed_price: 1.00 # for USD at https://pages.ebay.com.sg/help/sell/fixed-price.html
|