ebay 0.5.2 → 0.6.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.
- data/README +27 -8
- data/contrib/get_and_store_ebay_categories.rb +240 -0
- data/examples/add_item.rb +12 -12
- data/examples/get_categories.rb +2 -2
- data/examples/get_categories2.rb +2 -2
- data/examples/get_feedback.rb +2 -1
- data/examples/get_notification_preferences.rb +52 -0
- data/examples/get_notifications_usage.rb +52 -0
- data/examples/get_suggested_categories.rb +31 -0
- data/examples/set_notification_preferences.rb +28 -0
- data/examples/verify_add_item.rb +12 -12
- data/lib/eBay.rb +6403 -3128
- data/lib/eBayAPI.rb +4 -4
- data/lib/eBayDriver.rb +49 -0
- data/test/tc_hello_world.rb +1 -0
- data/test/tc_items.rb +1 -0
- data/test/tc_routing.rb +51 -0
- metadata +8 -2
data/README
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
|
2
2
|
== Welcome to eBay4R
|
3
3
|
|
4
|
-
eBay4R is a Ruby wrapper for eBay's Web Services SOAP API (
|
4
|
+
eBay4R is a Ruby wrapper for eBay's Web Services SOAP API (v449). Emphasis is
|
5
5
|
on ease of use and small footprint.
|
6
6
|
|
7
|
-
<b>This code is currently
|
7
|
+
<b>This code is currently beta</b>.
|
8
8
|
|
9
9
|
Please report bugs and other problems, see "Author" section at the bottom.
|
10
10
|
|
@@ -117,7 +117,28 @@ This is a more complex example that performs a real (useful) function:
|
|
117
117
|
|
118
118
|
eBay = EBay::API.new($authToken, $devId, $appId, $certId, :sandbox => true)
|
119
119
|
|
120
|
-
#
|
120
|
+
# Notice how we nest hashes to mimic the XML structure of an AddItem request
|
121
|
+
resp = eBay.AddItem(:Item => { :PrimaryCategory => { :CategoryID => 57882 },
|
122
|
+
:Title => 'Mouse Pad',
|
123
|
+
:Description => 'A really cool mouse pad, you know you want it...',
|
124
|
+
:Location => 'On Earth',
|
125
|
+
:StartPrice => 12.0,
|
126
|
+
:Quantity => 1,
|
127
|
+
:ListingDuration => "Days_7",
|
128
|
+
:Country => "US",
|
129
|
+
:Currency => "USD",
|
130
|
+
:PaymentMethods => ["VisaMC", "PersonalCheck"] })
|
131
|
+
|
132
|
+
puts "New Item #" + resp.itemID + " added."
|
133
|
+
|
134
|
+
The way we nest hashes in the above AddItem() call may be confusing at first.
|
135
|
+
It is just a short-hand way of creating the complex types we need for the
|
136
|
+
call.
|
137
|
+
|
138
|
+
You may instead explicitly create the complex types (see "Creating Complex
|
139
|
+
Data Types" below) needed for the call (it makes the code longer, but a bit
|
140
|
+
more readable):
|
141
|
+
|
121
142
|
resp = eBay.AddItem(:Item => EBay.Item(:PrimaryCategory => EBay.Category(:CategoryID => 57882),
|
122
143
|
:Title => 'Mouse Pad',
|
123
144
|
:Description => 'A really cool mouse pad, you know you want it...',
|
@@ -129,8 +150,6 @@ This is a more complex example that performs a real (useful) function:
|
|
129
150
|
:Currency => "USD",
|
130
151
|
:PaymentMethods => ["VisaMC", "PersonalCheck"]))
|
131
152
|
|
132
|
-
puts "New Item #" + resp.itemID + " added."
|
133
|
-
|
134
153
|
|
135
154
|
=== Format of Requests
|
136
155
|
|
@@ -152,7 +171,7 @@ See the "eBay Web Services SOAP API Guide" for acceptable parameters and values
|
|
152
171
|
for each API call. This guide can be downloaded at eBay's
|
153
172
|
{SOAP Development Center}[http://developer.ebay.com/soap/].
|
154
173
|
|
155
|
-
====
|
174
|
+
==== Creating Complex Data Types
|
156
175
|
|
157
176
|
A number of elements in eBay's schema are XML Schema simple types. For
|
158
177
|
example, CategoryID, Title, and Description are all strings. But many
|
@@ -340,7 +359,7 @@ AIM: garry97531
|
|
340
359
|
|
341
360
|
== Copyright
|
342
361
|
|
343
|
-
Copyright (c) 2005 Garry C. Dolley
|
362
|
+
Copyright (c) 2005,2006 Garry C. Dolley
|
344
363
|
|
345
364
|
eBay4R is free software; you can redistribute it and/or modify it under the
|
346
365
|
terms of the GNU General Public License as published by the Free Software
|
@@ -356,4 +375,4 @@ You should have received a copy of the GNU General Public License along with
|
|
356
375
|
eBay4R; if not, write to the Free Software Foundation, Inc., 51 Franklin
|
357
376
|
Street, Fifth Floor, Boston, MA 02110-1301, USA
|
358
377
|
|
359
|
-
$Id: README,v 1.
|
378
|
+
$Id: README,v 1.16 2006/04/24 05:51:18 garrydolley Exp $
|
@@ -0,0 +1,240 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# $Id: get_and_store_ebay_categories.rb,v 1.2 2006/01/18 09:42:02 garrydolley Exp $
|
3
|
+
#
|
4
|
+
# == Copyright
|
5
|
+
#
|
6
|
+
# Copyright (c) 2005,2006 Garry C. Dolley
|
7
|
+
#
|
8
|
+
# This file is part of eBay4R.
|
9
|
+
#
|
10
|
+
# eBay4R is free software; you can redistribute it and/or modify it under the
|
11
|
+
# terms of the GNU General Public License as published by the Free Software
|
12
|
+
# Foundation; either version 2 of the License, or (at your option) any later
|
13
|
+
# version.
|
14
|
+
#
|
15
|
+
# eBay4R is distributed in the hope that it will be useful, but WITHOUT ANY
|
16
|
+
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
17
|
+
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
18
|
+
# details.
|
19
|
+
#
|
20
|
+
# You should have received a copy of the GNU General Public License along with
|
21
|
+
# eBay4R; if not, write to the Free Software Foundation, Inc., 51 Franklin
|
22
|
+
# Street, Fifth Floor, Boston, MA 02110-1301, USA
|
23
|
+
#
|
24
|
+
# Created : 01/16/2006
|
25
|
+
#
|
26
|
+
# == Synopsis
|
27
|
+
#
|
28
|
+
# This script will retrieve the entire eBay Category tree for a specified eBay
|
29
|
+
# site (site_id) and store it in a MySQL database.
|
30
|
+
#
|
31
|
+
# == Database
|
32
|
+
#
|
33
|
+
# The schema used is as follows:
|
34
|
+
#
|
35
|
+
# CREATE TABLE ebay_categories (
|
36
|
+
# id int(11) NOT NULL auto_increment,
|
37
|
+
# site_id smallint(6) default NULL,
|
38
|
+
# category_id varchar(10) NOT NULL default '',
|
39
|
+
# category_parent_id varchar(10) default NULL,
|
40
|
+
# category_name varchar(128) NOT NULL default '',
|
41
|
+
# category_level int(11) default NULL,
|
42
|
+
# leaf_category tinyint(1) NOT NULL default '0',
|
43
|
+
# expired tinyint(1) NOT NULL default '0',
|
44
|
+
# virtual tinyint(1) NOT NULL default '0',
|
45
|
+
# auto_pay_enabled tinyint(1) NOT NULL default '0',
|
46
|
+
# b2b_vat_enabled tinyint(1) NOT NULL default '0',
|
47
|
+
# best_offer_enabled tinyint(1) NOT NULL default '0',
|
48
|
+
# intl_autos_fixed_cat tinyint(1) NOT NULL default '0',
|
49
|
+
# lsd tinyint(1) NOT NULL default '0',
|
50
|
+
# orpa tinyint(1) NOT NULL default '0',
|
51
|
+
# orra tinyint(1) NOT NULL default '0',
|
52
|
+
# PRIMARY KEY (id),
|
53
|
+
# UNIQUE KEY site_id (site_id,category_id),
|
54
|
+
# KEY category_id (category_id),
|
55
|
+
# KEY category_parent_id (category_parent_id),
|
56
|
+
# CONSTRAINT ebay_categories_ibfk_1 FOREIGN KEY (category_parent_id)
|
57
|
+
# REFERENCES ebay_categories (category_id)
|
58
|
+
# ) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
59
|
+
#
|
60
|
+
# and
|
61
|
+
#
|
62
|
+
# CREATE TABLE ebay_categories_info (
|
63
|
+
# id int(11) NOT NULL auto_increment,
|
64
|
+
# site_id smallint(6) default NULL,
|
65
|
+
# category_version varchar(16) NOT NULL default '',
|
66
|
+
# minimum_reserve_price double default NULL,
|
67
|
+
# reduce_reserve_allowed tinyint(1) NOT NULL default '0',
|
68
|
+
# reserve_price_allowed tinyint(1) NOT NULL default '0',
|
69
|
+
# update_time datetime default NULL,
|
70
|
+
# PRIMARY KEY (id)
|
71
|
+
# UNIQUE KEY site_id (site_id)
|
72
|
+
# ) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
73
|
+
#
|
74
|
+
# == Usage
|
75
|
+
#
|
76
|
+
# ./get_and_store_ebay_categories.rb -s site_id [ -t | --table TABLE_BASE_NAME ] [ -h | --host HOST ] [ -d | --database DB ] [ -u | --user USER ] [ -p | --password PW ] [ --debug ] [ -c concurrency ]
|
77
|
+
#
|
78
|
+
# Example site IDs: 0 = eBay USA, 2 = eBay Canada, 100 = eBay Motors
|
79
|
+
#
|
80
|
+
# Just like the examples/ directory, you need a file named
|
81
|
+
# "myCredentials.rb" in the current directory or Ruby load path.
|
82
|
+
#
|
83
|
+
# The "-c concurrency" command line option says how many category nodes we
|
84
|
+
# retrieve at a time. Default is 20. All direct children are also
|
85
|
+
# downloaded (grouped BFS).
|
86
|
+
#
|
87
|
+
# If you are getting out of memory errors, reduce this number.
|
88
|
+
# If you have lots of memory, you can increase this number and the import
|
89
|
+
# will be faster.
|
90
|
+
#
|
91
|
+
# Note: The eBay Category tree is very large. This script can run for 20
|
92
|
+
# minutes or longer.
|
93
|
+
|
94
|
+
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
95
|
+
|
96
|
+
require 'eBayAPI'
|
97
|
+
|
98
|
+
require 'optparse'
|
99
|
+
require 'rdoc/usage'
|
100
|
+
|
101
|
+
begin
|
102
|
+
require 'rubygems'
|
103
|
+
require_gem 'mysql'
|
104
|
+
rescue LoadError
|
105
|
+
require 'mysql'
|
106
|
+
end
|
107
|
+
|
108
|
+
#
|
109
|
+
# Set defaults and parse command line args
|
110
|
+
#
|
111
|
+
|
112
|
+
mysql_hostname = 'localhost'
|
113
|
+
mysql_database = 'test'
|
114
|
+
mysql_username = 'test'
|
115
|
+
mysql_password = ''
|
116
|
+
|
117
|
+
site_id = 0
|
118
|
+
table_name = "ebay_categories"
|
119
|
+
concurrency = 20
|
120
|
+
|
121
|
+
debug = false
|
122
|
+
|
123
|
+
opts = OptionParser.new
|
124
|
+
opts.on("-h", "--help") { RDoc::usage('usage') }
|
125
|
+
opts.on("-s SITE_ID") { |sid| site_id = sid }
|
126
|
+
opts.on("-c concurrency") { |c| concurrency = c.to_i }
|
127
|
+
|
128
|
+
opts.on("-h", "--host HOST") { |h| mysql_hostname = h }
|
129
|
+
opts.on("-d", "--database DB") { |d| mysql_database = d }
|
130
|
+
opts.on("-u", "--user USER") { |u| mysql_username = u }
|
131
|
+
opts.on("-p", "--password PW") { |p| mysql_password = p }
|
132
|
+
opts.on("--debug") { debug = true }
|
133
|
+
|
134
|
+
opts.on("-t", "--table TABLE_NAME") { |t| table_name = t }
|
135
|
+
|
136
|
+
opts.parse(ARGV) rescue RDoc::usage('usage')
|
137
|
+
|
138
|
+
if ARGV.size < 1
|
139
|
+
RDoc::usage('usage')
|
140
|
+
exit
|
141
|
+
end
|
142
|
+
|
143
|
+
#
|
144
|
+
# Open MySQL database
|
145
|
+
#
|
146
|
+
|
147
|
+
mysql = Mysql.new(mysql_hostname, mysql_username, mysql_password)
|
148
|
+
mysql.select_db(mysql_database)
|
149
|
+
|
150
|
+
# Put your credentials in this file
|
151
|
+
load('myCredentials.rb')
|
152
|
+
|
153
|
+
# Create new eBay caller object. Omit last argument to use live platform.
|
154
|
+
eBay = EBay::API.new($authToken, $devId, $appId, $certId, :sandbox => true)
|
155
|
+
eBay.debug = true if debug
|
156
|
+
|
157
|
+
parents_to_process = [ :id => '', :depth => 0 ]
|
158
|
+
|
159
|
+
#
|
160
|
+
# Traverse entire category tree and import into our database
|
161
|
+
#
|
162
|
+
|
163
|
+
puts "Starting import... Go get some coffee, this is going to take a while..."
|
164
|
+
|
165
|
+
imported_site_wide_info = false
|
166
|
+
i = 0
|
167
|
+
while (some_parents = parents_to_process.first(concurrency)).length > 0
|
168
|
+
seek_depth = some_parents.max { |a,b| a[:depth] <=> b[:depth] }
|
169
|
+
seek_depth = seek_depth[:depth] + 1
|
170
|
+
|
171
|
+
if debug
|
172
|
+
puts "Current process queue:"
|
173
|
+
p parents_to_process
|
174
|
+
puts "Up next:"
|
175
|
+
p some_parents
|
176
|
+
end
|
177
|
+
|
178
|
+
resp = eBay.GetCategories(:DetailLevel => 'ReturnAll', # Return all available info
|
179
|
+
:CategorySideID => site_id,
|
180
|
+
:CategoryParent => (some_parents[0][:id] == '' && some_parents.length == 1) ? '' : some_parents.collect { |a| a[:id] },
|
181
|
+
:ViewAllNotes => true,
|
182
|
+
:LevelLimit => seek_depth)
|
183
|
+
|
184
|
+
parents_to_process -= some_parents
|
185
|
+
|
186
|
+
if !imported_site_wide_info
|
187
|
+
mysql.query("DELETE FROM #{table_name}_info WHERE site_id = #{site_id}")
|
188
|
+
|
189
|
+
mysql.query("INSERT INTO #{table_name}_info VALUES (null, '#{site_id}', '#{resp.categoryVersion}', '#{resp.minimumReservePrice}', #{resp.reduceReserveAllowed},
|
190
|
+
#{resp.reservePriceAllowed}, '#{resp.updateTime}')")
|
191
|
+
|
192
|
+
imported_site_wide_info = true
|
193
|
+
end
|
194
|
+
|
195
|
+
if resp.categoryCount.to_i > 0
|
196
|
+
[resp.categoryArray.category].flatten.each do |cat|
|
197
|
+
if cat.categoryLevel.to_i == seek_depth
|
198
|
+
if cat.leafCategory == "false"
|
199
|
+
parents_to_process << { :id => cat.categoryID, :depth => cat.categoryLevel.to_i }
|
200
|
+
puts "Added Category ##{cat.categoryID} to process queue..." if debug
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
# Make sure we don't try to INSERT a category we already have
|
205
|
+
r = mysql.query("SELECT category_id FROM #{table_name} WHERE category_id = #{cat.categoryID} AND site_id = #{site_id}")
|
206
|
+
|
207
|
+
if r.num_rows < 1
|
208
|
+
if cat.categoryID == cat.categoryParentID
|
209
|
+
cat.categoryParentID = "null"
|
210
|
+
else
|
211
|
+
cat.categoryParentID = "'#{cat.categoryParentID}'"
|
212
|
+
end
|
213
|
+
|
214
|
+
cat.categoryName = mysql.escape_string(cat.categoryName)
|
215
|
+
|
216
|
+
# Determine values of conditional fields
|
217
|
+
auto_pay = cat.respond_to?(:autoPayEnabled) ? cat.autoPayEnabled : false
|
218
|
+
b2b_vat = cat.respond_to?(:b2BVATEnabled) ? cat.b2BVATEnabled : false
|
219
|
+
best_offer = cat.respond_to?(:bestOfferEnabled) ? cat.bestOfferEnabled : false
|
220
|
+
orra = cat.respond_to?(:oRRA) ? cat.oRRA : false
|
221
|
+
sge = cat.respond_to?(:sellerGuaranteeEligible) ? cat.sellerGuaranteeEligible : false
|
222
|
+
|
223
|
+
puts "Inserting Category ##{cat.categoryID}: #{cat.categoryName}..." if debug
|
224
|
+
|
225
|
+
#
|
226
|
+
# Do the actual writing to the database
|
227
|
+
#
|
228
|
+
mysql.query("INSERT INTO #{table_name}
|
229
|
+
VALUES (null, '#{site_id}', '#{cat.categoryID}', #{cat.categoryParentID}, '#{cat.categoryName}', '#{cat.categoryLevel}', #{cat.leafCategory},
|
230
|
+
#{cat.expired}, #{cat.virtual}, #{auto_pay}, #{b2b_vat}, #{best_offer}, #{cat.intlAutosFixedCat}, #{cat.lSD}, #{cat.oRPA}, #{orra},
|
231
|
+
#{sge})")
|
232
|
+
|
233
|
+
i += 1
|
234
|
+
puts "Imported #{i} categories so far..." if i % 100 == 0
|
235
|
+
end
|
236
|
+
end
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
mysql.close
|
data/examples/add_item.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
# $Id: add_item.rb,v 1.
|
2
|
+
# $Id: add_item.rb,v 1.11 2006/01/13 09:56:29 garrydolley Exp $
|
3
3
|
|
4
4
|
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
5
5
|
require 'eBayAPI'
|
@@ -12,17 +12,17 @@ load('myCredentials.rb')
|
|
12
12
|
|
13
13
|
eBay = EBay::API.new($authToken, $devId, $appId, $certId, :sandbox => true)
|
14
14
|
|
15
|
-
#
|
16
|
-
resp = eBay.AddItem(:Item =>
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
15
|
+
# Shorter way of passing complex types (implied by hashing) than when we did in v0.5.2 and prior
|
16
|
+
resp = eBay.AddItem(:Item => { :PrimaryCategory => { :CategoryID => 57882 },
|
17
|
+
:Title => 'Mouse Pad',
|
18
|
+
:Description => 'A really cool mouse pad, you know you want it...',
|
19
|
+
:Location => 'On Earth',
|
20
|
+
:StartPrice => 12.0,
|
21
|
+
:Quantity => 1,
|
22
|
+
:ListingDuration => "Days_7",
|
23
|
+
:Country => "US",
|
24
|
+
:Currency => "USD",
|
25
|
+
:PaymentMethods => ["VisaMC", "PersonalCheck"] })
|
26
26
|
|
27
27
|
puts "New Item #" + resp.itemID + " added."
|
28
28
|
puts "You spent:\n"
|
data/examples/get_categories.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
# $Id: get_categories.rb,v 1.
|
2
|
+
# $Id: get_categories.rb,v 1.2 2006/01/16 09:52:56 garrydolley Exp $
|
3
3
|
|
4
4
|
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
5
5
|
|
@@ -17,7 +17,7 @@ eBay = EBay::API.new($authToken, $devId, $appId, $certId, :sandbox => true)
|
|
17
17
|
|
18
18
|
# Call "GetCategories"
|
19
19
|
resp = eBay.GetCategories(:DetailLevel => 'ReturnAll', # Return all available info
|
20
|
-
:CategorySideID =>
|
20
|
+
:CategorySideID => 0, # US site
|
21
21
|
:LevelLimit => 1) # Only 1 level deep
|
22
22
|
|
23
23
|
# Report results
|
data/examples/get_categories2.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
# $Id: get_categories2.rb,v 1.
|
2
|
+
# $Id: get_categories2.rb,v 1.3 2006/01/16 09:54:08 garrydolley Exp $
|
3
3
|
|
4
4
|
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
5
5
|
|
@@ -17,7 +17,7 @@ eBay = EBay::API.new($authToken, $devId, $appId, $certId, :sandbox => true, :sit
|
|
17
17
|
|
18
18
|
# Call "GetCategories"
|
19
19
|
resp = eBay.GetCategories(:DetailLevel => 'ReturnAll', # Return all available info
|
20
|
-
:CategorySideID => 100, # US eBay Motors Site
|
20
|
+
:CategorySideID => 100, # US eBay Motors Site
|
21
21
|
:LevelLimit => 2) # 2 Levels Deep
|
22
22
|
|
23
23
|
# Report results
|
data/examples/get_feedback.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
# $Id: get_feedback.rb,v 1.
|
2
|
+
# $Id: get_feedback.rb,v 1.3 2006/01/25 08:38:42 garrydolley Exp $
|
3
3
|
|
4
4
|
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
5
5
|
require 'eBayAPI'
|
@@ -45,3 +45,4 @@ puts "Total Feedback:"
|
|
45
45
|
resp.feedbackSummary.totalFeedbackPeriodArray.feedbackPeriod.each do |fb|
|
46
46
|
puts " Last #{fb.periodInDays} Days: #{fb.count}"
|
47
47
|
end
|
48
|
+
|
@@ -0,0 +1,52 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# $Id: get_notification_preferences.rb,v 1.2 2006/03/10 03:52:37 garrydolley Exp $
|
3
|
+
|
4
|
+
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
5
|
+
require 'eBayAPI'
|
6
|
+
|
7
|
+
#
|
8
|
+
# Example of GetNotificationPreferences call
|
9
|
+
#
|
10
|
+
|
11
|
+
# Put your credentials in this file
|
12
|
+
load('myCredentials.rb')
|
13
|
+
|
14
|
+
# Create new eBay caller object. Omit last argument to use live platform.
|
15
|
+
eBay = EBay::API.new($authToken, $devId, $appId, $certId, :sandbox => true)
|
16
|
+
|
17
|
+
resp = eBay.GetNotificationPreferences(:PreferenceLevel => 'User')
|
18
|
+
|
19
|
+
if resp.respond_to? 'userDeliveryPreferenceArray'
|
20
|
+
[resp.userDeliveryPreferenceArray.notificationEnable].flatten.each do |pref|
|
21
|
+
puts "Event Enable: " + pref.eventEnable
|
22
|
+
puts "Event Type: " + pref.eventType
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
resp = eBay.GetNotificationPreferences(:PreferenceLevel => 'Application')
|
27
|
+
|
28
|
+
if resp.respond_to? 'applicationDeliveryPreferences'
|
29
|
+
[resp.applicationDeliveryPreferences].flatten.each do |pref|
|
30
|
+
puts "Alert Email: " + pref.alertEmail if pref.respond_to? 'alertEmail'
|
31
|
+
puts "Alert Enable: " + pref.alertEnable if pref.respond_to? 'alertEnable'
|
32
|
+
puts "Application Enable: " + pref.applicationEnable if pref.respond_to? 'applicationEnable'
|
33
|
+
puts "Application URL: " + pref.applicationURL if pref.respond_to? 'applicationURL'
|
34
|
+
puts "Device Type: " + pref.deviceType if pref.respond_to? 'deviceType'
|
35
|
+
puts "Notification Payload: " + pref.notificationPayloadType if pref.respond_to? 'notificationPayloadType'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
resp = eBay.GetNotificationPreferences(:PreferenceLevel => 'Event')
|
40
|
+
|
41
|
+
if resp.respond_to? 'eventProperty'
|
42
|
+
[resp.eventProperty].flatten.each do |e|
|
43
|
+
puts "Event Type: " + e.eventType
|
44
|
+
puts "Name: " + e.name
|
45
|
+
puts "Value: " + e.value
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# More fields are present, see eBay's SOAP API Guide
|
50
|
+
#
|
51
|
+
# If you add on to this example with more fields, please send it to
|
52
|
+
# gdolley@ucla.edu so I can include it with the next release :)
|
@@ -0,0 +1,52 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# $Id: get_notifications_usage.rb,v 1.4 2006/03/16 09:37:51 garrydolley Exp $
|
3
|
+
|
4
|
+
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
5
|
+
require 'eBayAPI'
|
6
|
+
|
7
|
+
#
|
8
|
+
# Example of GetNotificationsUsage call
|
9
|
+
#
|
10
|
+
|
11
|
+
# Put your credentials in this file
|
12
|
+
load('myCredentials.rb')
|
13
|
+
|
14
|
+
# Create new eBay caller object. Omit last argument to use live platform.
|
15
|
+
eBay = EBay::API.new($authToken, $devId, $appId, $certId, :sandbox => true)
|
16
|
+
eBay.debug = true
|
17
|
+
|
18
|
+
# Fill this in with a real item number to get more info about notifications
|
19
|
+
item_no = ''
|
20
|
+
|
21
|
+
if !item_no.empty?
|
22
|
+
resp = eBay.GetNotificationsUsage(:ItemID => item_no)
|
23
|
+
|
24
|
+
[resp.notificationDetailsArray.notificationDetails].flatten.each do |notif|
|
25
|
+
puts "Delivery Status: " + notif.deliveryStatus
|
26
|
+
puts "Delivery Time: " + notif.deliveryTime if notif.respond_to? 'deliveryTime'
|
27
|
+
puts "Delivery URL: " + notif.deliveryURL
|
28
|
+
puts "Error Message: " + notif.errorMessage
|
29
|
+
puts "Expiration Time: " + notif.expirationTime
|
30
|
+
puts "Next Retry Time: " + notif.nextRetryTime
|
31
|
+
puts "Retries: " + notif.retries if notif.respond_to? 'retries'
|
32
|
+
# puts "Type: " + notif.type # Mmmm... "type" is already a method of Object
|
33
|
+
end if resp.notificationDetailsArray.respond_to? 'notificationDetails'
|
34
|
+
end
|
35
|
+
|
36
|
+
resp = eBay.GetNotificationsUsage
|
37
|
+
|
38
|
+
ns = resp.notificationStatistics
|
39
|
+
|
40
|
+
puts "Current Counters: "
|
41
|
+
puts " Delivered: " + ns.deliveredCount
|
42
|
+
puts " Errors: " + ns.errorCount
|
43
|
+
puts " Expired: " + ns.expiredCount
|
44
|
+
puts " Queued New: " + ns.queuedNewCount
|
45
|
+
puts " Queued Pending: " + ns.queuedPendingCount
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
# More fields are present, see eBay's SOAP API Guide
|
50
|
+
#
|
51
|
+
# If you add on to this example with more fields, please send it to
|
52
|
+
# gdolley@ucla.edu so I can include it with the next release :)
|