peddler 0.3.1 → 0.4.1
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/LICENSE +3 -3
- data/README.md +42 -105
- data/lib/peddler/feeds.rb +4 -184
- data/lib/peddler/fulfillment_inbound_shipment.rb +11 -0
- data/lib/peddler/fulfillment_inventory.rb +10 -0
- data/lib/peddler/fulfillment_outbound_shipment.rb +10 -0
- data/lib/peddler/orders.rb +10 -0
- data/lib/peddler/products.rb +11 -0
- data/lib/peddler/reports.rb +4 -94
- data/lib/peddler/sellers.rb +9 -0
- data/lib/peddler/service.rb +106 -0
- data/lib/peddler/version.rb +1 -1
- data/lib/peddler.rb +5 -17
- metadata +61 -175
- data/.gitignore +0 -5
- data/.rspec +0 -1
- data/.rvmrc +0 -2
- data/Gemfile +0 -4
- data/Gemfile.lock +0 -47
- data/Rakefile +0 -12
- data/lib/peddler/client.rb +0 -229
- data/lib/peddler/handlers.rb +0 -38
- data/lib/peddler/inventory.rb +0 -140
- data/lib/peddler/legacy_reports.rb +0 -109
- data/lib/peddler/refunds.rb +0 -52
- data/lib/peddler/transport.rb +0 -135
- data/mussels.jpg +0 -0
- data/peddler.gemspec +0 -28
- data/spec/peddler/client_spec.rb +0 -45
- data/spec/peddler/feeds_spec.rb +0 -88
- data/spec/peddler/handlers_spec.rb +0 -12
- data/spec/peddler/inventory_spec.rb +0 -74
- data/spec/peddler/legacy_reports_spec.rb +0 -89
- data/spec/peddler/refunds_spec.rb +0 -42
- data/spec/peddler/reports_spec.rb +0 -26
- data/spec/peddler/transport_spec.rb +0 -65
- data/spec/spec_helper.rb +0 -7
- data/spec/support/amazon.yml.example +0 -2
- data/spec/support/amazon_credentials.rb +0 -3
- data/spec/support/vcr.rb +0 -13
- data/spec_rubies +0 -2
data/lib/peddler.rb
CHANGED
@@ -1,18 +1,6 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
%w(
|
2
|
+
feeds fulfillment_inbound_shipment fulfillment_inventory
|
3
|
+
fulfillment_outbound_shipment orders products reports sellers
|
4
|
+
).each do |service|
|
5
|
+
require "peddler/#{service}"
|
3
6
|
end
|
4
|
-
|
5
|
-
require 'active_support/core_ext/hash'
|
6
|
-
require 'net/https'
|
7
|
-
require 'ostruct'
|
8
|
-
require 'peddler/version'
|
9
|
-
require 'peddler/client'
|
10
|
-
require 'peddler/handlers'
|
11
|
-
require 'peddler/feeds'
|
12
|
-
require 'peddler/inventory'
|
13
|
-
require 'peddler/legacy_reports'
|
14
|
-
require 'peddler/refunds'
|
15
|
-
require 'peddler/reports'
|
16
|
-
require 'peddler/transport'
|
17
|
-
require 'tempfile'
|
18
|
-
require 'time'
|
metadata
CHANGED
@@ -1,206 +1,92 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: peddler
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 3
|
9
|
-
- 1
|
10
|
-
version: 0.3.1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.1
|
5
|
+
prerelease:
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Hakan Ensari
|
9
|
+
- Ezekiel Templin
|
14
10
|
autorequire:
|
15
11
|
bindir: bin
|
16
12
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
name: activesupport
|
23
|
-
prerelease: false
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ">="
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 7
|
30
|
-
segments:
|
31
|
-
- 2
|
32
|
-
- 3
|
33
|
-
- 2
|
34
|
-
version: 2.3.2
|
35
|
-
type: :runtime
|
36
|
-
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: rdiscount
|
39
|
-
prerelease: false
|
40
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
13
|
+
date: 2012-09-18 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rake
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
41
18
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
|
46
|
-
segments:
|
47
|
-
- 1
|
48
|
-
- 6
|
49
|
-
- 5
|
50
|
-
version: 1.6.5
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
51
23
|
type: :development
|
52
|
-
version_requirements: *id002
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
name: sdoc-helpers
|
55
24
|
prerelease: false
|
56
|
-
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
26
|
none: false
|
58
|
-
requirements:
|
59
|
-
- -
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
- 4
|
66
|
-
version: 0.1.4
|
67
|
-
type: :development
|
68
|
-
version_requirements: *id003
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rspec
|
71
|
-
prerelease: false
|
72
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ~>
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
hash: 15
|
78
|
-
segments:
|
79
|
-
- 2
|
80
|
-
- 0
|
81
|
-
- 0
|
82
|
-
version: 2.0.0
|
83
|
-
type: :development
|
84
|
-
version_requirements: *id004
|
85
|
-
- !ruby/object:Gem::Dependency
|
86
|
-
name: vcr
|
87
|
-
prerelease: false
|
88
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '0'
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: jeff
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
89
34
|
none: false
|
90
|
-
requirements:
|
35
|
+
requirements:
|
91
36
|
- - ~>
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
|
94
|
-
|
95
|
-
- 1
|
96
|
-
- 2
|
97
|
-
- 0
|
98
|
-
version: 1.2.0
|
99
|
-
type: :development
|
100
|
-
version_requirements: *id005
|
101
|
-
- !ruby/object:Gem::Dependency
|
102
|
-
name: webmock
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: 0.4.0
|
39
|
+
type: :runtime
|
103
40
|
prerelease: false
|
104
|
-
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
42
|
none: false
|
106
|
-
requirements:
|
43
|
+
requirements:
|
107
44
|
- - ~>
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
- 0
|
114
|
-
version: 1.4.0
|
115
|
-
type: :development
|
116
|
-
version_requirements: *id006
|
117
|
-
description: Peddler is a Ruby wrapper to the Amazon Inventory Management API.
|
118
|
-
email:
|
119
|
-
- hakan.ensari@papercavalier.com
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 0.4.0
|
47
|
+
description: A wrapper to the Amazon Marketplace Web Service (MWS) API
|
48
|
+
email:
|
49
|
+
- code@papercavalier.com
|
120
50
|
executables: []
|
121
|
-
|
122
51
|
extensions: []
|
123
|
-
|
124
52
|
extra_rdoc_files: []
|
125
|
-
|
126
|
-
files:
|
127
|
-
- .gitignore
|
128
|
-
- .rspec
|
129
|
-
- .rvmrc
|
130
|
-
- Gemfile
|
131
|
-
- Gemfile.lock
|
132
|
-
- LICENSE
|
133
|
-
- README.md
|
134
|
-
- Rakefile
|
135
|
-
- lib/peddler.rb
|
136
|
-
- lib/peddler/client.rb
|
53
|
+
files:
|
137
54
|
- lib/peddler/feeds.rb
|
138
|
-
- lib/peddler/
|
139
|
-
- lib/peddler/
|
140
|
-
- lib/peddler/
|
141
|
-
- lib/peddler/
|
55
|
+
- lib/peddler/fulfillment_inbound_shipment.rb
|
56
|
+
- lib/peddler/fulfillment_inventory.rb
|
57
|
+
- lib/peddler/fulfillment_outbound_shipment.rb
|
58
|
+
- lib/peddler/orders.rb
|
59
|
+
- lib/peddler/products.rb
|
142
60
|
- lib/peddler/reports.rb
|
143
|
-
- lib/peddler/
|
61
|
+
- lib/peddler/sellers.rb
|
62
|
+
- lib/peddler/service.rb
|
144
63
|
- lib/peddler/version.rb
|
145
|
-
-
|
146
|
-
-
|
147
|
-
-
|
148
|
-
- spec/peddler/feeds_spec.rb
|
149
|
-
- spec/peddler/handlers_spec.rb
|
150
|
-
- spec/peddler/inventory_spec.rb
|
151
|
-
- spec/peddler/legacy_reports_spec.rb
|
152
|
-
- spec/peddler/refunds_spec.rb
|
153
|
-
- spec/peddler/reports_spec.rb
|
154
|
-
- spec/peddler/transport_spec.rb
|
155
|
-
- spec/spec_helper.rb
|
156
|
-
- spec/support/amazon.yml.example
|
157
|
-
- spec/support/amazon_credentials.rb
|
158
|
-
- spec/support/vcr.rb
|
159
|
-
- spec_rubies
|
160
|
-
has_rdoc: true
|
64
|
+
- lib/peddler.rb
|
65
|
+
- LICENSE
|
66
|
+
- README.md
|
161
67
|
homepage: http://github.com/papercavalier/peddler
|
162
68
|
licenses: []
|
163
|
-
|
164
69
|
post_install_message:
|
165
70
|
rdoc_options: []
|
166
|
-
|
167
|
-
require_paths:
|
71
|
+
require_paths:
|
168
72
|
- lib
|
169
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
73
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
170
74
|
none: false
|
171
|
-
requirements:
|
172
|
-
- -
|
173
|
-
- !ruby/object:Gem::Version
|
174
|
-
|
175
|
-
|
176
|
-
- 0
|
177
|
-
version: "0"
|
178
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '1.9'
|
79
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
179
80
|
none: false
|
180
|
-
requirements:
|
181
|
-
- -
|
182
|
-
- !ruby/object:Gem::Version
|
183
|
-
|
184
|
-
segments:
|
185
|
-
- 0
|
186
|
-
version: "0"
|
81
|
+
requirements:
|
82
|
+
- - ! '>='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
187
85
|
requirements: []
|
188
|
-
|
189
|
-
|
190
|
-
rubygems_version: 1.3.7
|
86
|
+
rubyforge_project:
|
87
|
+
rubygems_version: 1.8.23
|
191
88
|
signing_key:
|
192
89
|
specification_version: 3
|
193
|
-
summary:
|
194
|
-
test_files:
|
195
|
-
|
196
|
-
- spec/peddler/feeds_spec.rb
|
197
|
-
- spec/peddler/handlers_spec.rb
|
198
|
-
- spec/peddler/inventory_spec.rb
|
199
|
-
- spec/peddler/legacy_reports_spec.rb
|
200
|
-
- spec/peddler/refunds_spec.rb
|
201
|
-
- spec/peddler/reports_spec.rb
|
202
|
-
- spec/peddler/transport_spec.rb
|
203
|
-
- spec/spec_helper.rb
|
204
|
-
- spec/support/amazon.yml.example
|
205
|
-
- spec/support/amazon_credentials.rb
|
206
|
-
- spec/support/vcr.rb
|
90
|
+
summary: Wraps the Amazon Marketplace Web Service API
|
91
|
+
test_files: []
|
92
|
+
has_rdoc:
|
data/.rspec
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
-cfd
|
data/.rvmrc
DELETED
data/Gemfile
DELETED
data/Gemfile.lock
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
peddler (0.3.0)
|
5
|
-
activesupport (>= 2.3.2)
|
6
|
-
|
7
|
-
GEM
|
8
|
-
remote: http://rubygems.org/
|
9
|
-
specs:
|
10
|
-
activesupport (3.0.1)
|
11
|
-
addressable (2.2.2)
|
12
|
-
crack (0.1.8)
|
13
|
-
diff-lcs (1.1.2)
|
14
|
-
json (1.4.6)
|
15
|
-
rdiscount (1.6.5)
|
16
|
-
rdoc (2.4.3)
|
17
|
-
rspec (2.0.1)
|
18
|
-
rspec-core (~> 2.0.1)
|
19
|
-
rspec-expectations (~> 2.0.1)
|
20
|
-
rspec-mocks (~> 2.0.1)
|
21
|
-
rspec-core (2.0.1)
|
22
|
-
rspec-expectations (2.0.1)
|
23
|
-
diff-lcs (>= 1.1.2)
|
24
|
-
rspec-mocks (2.0.1)
|
25
|
-
rspec-core (~> 2.0.1)
|
26
|
-
rspec-expectations (~> 2.0.1)
|
27
|
-
sdoc (0.2.20)
|
28
|
-
json (>= 1.1.3)
|
29
|
-
rdoc (= 2.4.3)
|
30
|
-
sdoc-helpers (0.1.4)
|
31
|
-
sdoc (~> 0.2)
|
32
|
-
vcr (1.2.0)
|
33
|
-
webmock (1.4.0)
|
34
|
-
addressable (>= 2.2.2)
|
35
|
-
crack (>= 0.1.7)
|
36
|
-
|
37
|
-
PLATFORMS
|
38
|
-
ruby
|
39
|
-
|
40
|
-
DEPENDENCIES
|
41
|
-
activesupport (>= 2.3.2)
|
42
|
-
peddler!
|
43
|
-
rdiscount (~> 1.6.5)
|
44
|
-
rspec (~> 2.0.0)
|
45
|
-
sdoc-helpers (~> 0.1.4)
|
46
|
-
vcr (~> 1.2.0)
|
47
|
-
webmock (~> 1.4.0)
|
data/Rakefile
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
require 'bundler'
|
2
|
-
require 'rspec/core/rake_task'
|
3
|
-
require 'sdoc_helpers'
|
4
|
-
|
5
|
-
Bundler::GemHelper.install_tasks
|
6
|
-
|
7
|
-
desc 'Run all specs in spec directory'
|
8
|
-
RSpec::Core::RakeTask.new(:spec) do |spec|
|
9
|
-
spec.pattern = 'spec/**/*_spec.rb'
|
10
|
-
end
|
11
|
-
|
12
|
-
task :default => :spec
|
data/lib/peddler/client.rb
DELETED
@@ -1,229 +0,0 @@
|
|
1
|
-
# = Peddler
|
2
|
-
# Peddler is a Ruby wrapper to the {Amazon Inventory management API}[https://images-na.ssl-images-amazon.com/images/G/01/Amazon_AIM/Amazon_AIM.pdf].
|
3
|
-
#
|
4
|
-
# Peddler::Client contains some detailed explanation and examples of usage.
|
5
|
-
module Peddler
|
6
|
-
# This is the public interface of the Peddler library.
|
7
|
-
class Client
|
8
|
-
# Creates a client.
|
9
|
-
#
|
10
|
-
# client = Peddler::Client.new(
|
11
|
-
# :username => 'foo@bar.com',
|
12
|
-
# :password => 'secret',
|
13
|
-
# :region => :us
|
14
|
-
# )
|
15
|
-
#
|
16
|
-
# Alternatively, set attributes after creating the client:
|
17
|
-
#
|
18
|
-
# client = Peddler::Client.new
|
19
|
-
# client.username = 'foo@bar.co.uk'
|
20
|
-
# client.password = 'tad_more_secret'
|
21
|
-
# client.region = 'uk'
|
22
|
-
#
|
23
|
-
def initialize(params={})
|
24
|
-
[:username=, :password=, :region=].each do |method|
|
25
|
-
self.class.send(:define_method, method, lambda { |value| transport.send(method, value) })
|
26
|
-
end
|
27
|
-
params.each_pair { |k, v| self.send("#{k}=", v) }
|
28
|
-
end
|
29
|
-
|
30
|
-
# Creates an inventory batch.
|
31
|
-
#
|
32
|
-
# batch = client.new_inventory_batch
|
33
|
-
# book = new_inventory_item(
|
34
|
-
# :product_id => '1234567890',
|
35
|
-
# :sku => 'SKU-001',
|
36
|
-
# :price => 10.00,
|
37
|
-
# :quantity => 1)
|
38
|
-
# batch << book
|
39
|
-
# batch.upload
|
40
|
-
#
|
41
|
-
# Once the batch is processed, you may view the report:
|
42
|
-
#
|
43
|
-
# report = client.new_report :upload, :id => batch.id
|
44
|
-
# p report.body
|
45
|
-
# => "Feed Processing Summary:\n\tNumber of records processed\t\t1\n\tNumber of records successful\t\t1\n\n"
|
46
|
-
#
|
47
|
-
def new_inventory_batch
|
48
|
-
Peddler::Inventory::Batch.new(transport.dup)
|
49
|
-
end
|
50
|
-
|
51
|
-
# A short-hand method to purge inventory.
|
52
|
-
#
|
53
|
-
# client.purge_inventory
|
54
|
-
#
|
55
|
-
def purge_inventory
|
56
|
-
empty_batch = Peddler::Inventory::Batch.new(transport.dup)
|
57
|
-
empty_batch.upload(:method => 'purge')
|
58
|
-
|
59
|
-
end
|
60
|
-
|
61
|
-
# Creates an inventory item. Parameter keys are lowercased and underscored but otherwise the same as
|
62
|
-
# the colum titles in the tab-delimited upload templates provided by Amazon.
|
63
|
-
def new_inventory_item(params={})
|
64
|
-
Peddler::Inventory::Item.new(params)
|
65
|
-
end
|
66
|
-
|
67
|
-
# Returns count of pending inventory uploads queued at Amazon.
|
68
|
-
def inventory_queue
|
69
|
-
Peddler::Inventory::Queue.count(transport)
|
70
|
-
end
|
71
|
-
|
72
|
-
# Creates an order fulfillment batch.
|
73
|
-
#
|
74
|
-
# feed = client.new_order_fulfillment_feed
|
75
|
-
# fulfilled_order = client.new_fulfilled_order(
|
76
|
-
# :order_id => "123-1234567-1234567",
|
77
|
-
# :order_date => "2009-08-01")
|
78
|
-
# feed << fulfilled_order
|
79
|
-
# feed.upload
|
80
|
-
# feed.status
|
81
|
-
# => "_SUBMITTED_"
|
82
|
-
# sleep(60)
|
83
|
-
# feed.status!
|
84
|
-
# => "_DONE_"
|
85
|
-
# p feed.download.to_s
|
86
|
-
#
|
87
|
-
def new_order_fulfillment_feed
|
88
|
-
Peddler::Feeds::OrderFulfillment::Batch.new(transport.dup)
|
89
|
-
end
|
90
|
-
|
91
|
-
# Creates an item that can then be added to an order fulfillment feed. Keys are lowercased and underscored but
|
92
|
-
# otherwise the same as Amazon's headers. See section 7.1 in the API docs.
|
93
|
-
def new_fulfilled_order(params={})
|
94
|
-
Peddler::Feeds::OrderFulfillment::Item.new(params)
|
95
|
-
end
|
96
|
-
|
97
|
-
# Creates an order cancellation batch.
|
98
|
-
#
|
99
|
-
# feed = client.new_order_cancellation_feed
|
100
|
-
# cancelled_order = client.new_cancelled_order(
|
101
|
-
# :order_id => "123-1234567-1234567",
|
102
|
-
# :cancellation_reason_code => "NoInventory",
|
103
|
-
# :amazon_order_item_code => "12341234567890")
|
104
|
-
# feed << cancelled_order
|
105
|
-
# feed.upload
|
106
|
-
# feed.status
|
107
|
-
# => "_SUBMITTED_"
|
108
|
-
# sleep(60)
|
109
|
-
# feed.status!
|
110
|
-
# => "_DONE_"
|
111
|
-
# p feed.download.to_s
|
112
|
-
#
|
113
|
-
def new_order_cancellation_feed
|
114
|
-
Peddler::Feeds::OrderCancellation::Batch.new(transport.dup)
|
115
|
-
end
|
116
|
-
|
117
|
-
# Creates an item that can then be added to an order cancellation feed. Keys are lowercased and underscored but
|
118
|
-
# otherwise the same as Amazon's headers. See section 7.4 in the API docs.
|
119
|
-
def new_cancelled_order(params={})
|
120
|
-
Peddler::Feeds::OrderCancellation::Item.new(params)
|
121
|
-
end
|
122
|
-
|
123
|
-
# Creates a refund batch.
|
124
|
-
#
|
125
|
-
# batch = client.new_refund_batch
|
126
|
-
# refund = client.new_refund(
|
127
|
-
# :order_id => "123-1234567-1234567",
|
128
|
-
# :payments_transaction_id => "12341234567890",
|
129
|
-
# :refund_amount => 10.00,
|
130
|
-
# :reason => "CouldNotShip",
|
131
|
-
# :message => "With our apologies.")
|
132
|
-
# batch << refund
|
133
|
-
# batch.upload
|
134
|
-
# sleep(60)
|
135
|
-
# status = client.latest_reports :batch_refund, :count => 1
|
136
|
-
# report = client.new_report(
|
137
|
-
# :batch_refund,
|
138
|
-
# :id => status[0].id)
|
139
|
-
# p report.body
|
140
|
-
# => "123-1234567-1234567order-item-id: 12341234567890\tSUCCESS 10.00 is Refunded.\r\n"
|
141
|
-
#
|
142
|
-
def new_refund_batch
|
143
|
-
Peddler::Refunds::Batch.new(transport.dup)
|
144
|
-
end
|
145
|
-
|
146
|
-
# Creates a refund item that can then be added to a refund batch.
|
147
|
-
#
|
148
|
-
# Possible reasons: ["GeneralAdjustment", "CouldNotShip", "DifferentItem", "MerchandiseNotReceived", "MerchandiseNotAsDescribed"]
|
149
|
-
def new_refund(params={})
|
150
|
-
Peddler::Refunds::Item.new(params)
|
151
|
-
end
|
152
|
-
|
153
|
-
# Creates an instance for an already-generated report. Works only with
|
154
|
-
# legacy reports, meaning anything that comes before section 7 in the API
|
155
|
-
# docs.
|
156
|
-
#
|
157
|
-
# Possible report names: [:upload, :order, :preorder, :batch_refund,
|
158
|
-
# :open_listings, :open_listings_lite, :open_listings_liter]
|
159
|
-
#
|
160
|
-
# You can download a specific report by using its ID. Otherwise, the
|
161
|
-
# instance will fetch the latest available report. One oddball exception:
|
162
|
-
# Upload reports do require an ID and will return nil if you don't provide
|
163
|
-
# one.
|
164
|
-
#
|
165
|
-
# orders_report = client.new_report :order
|
166
|
-
# orders = client.detab(orders_report.body)
|
167
|
-
# orders[0].buyer_name
|
168
|
-
# => "John Doe"
|
169
|
-
#
|
170
|
-
# preorders_report = client.new_report(
|
171
|
-
# :preorder,
|
172
|
-
# :product_line => "Books",
|
173
|
-
# :frequency => 2)
|
174
|
-
# preorders = client.detab(preorders_report.body)
|
175
|
-
# preorders[0].average_asking_price
|
176
|
-
# => "100"
|
177
|
-
#
|
178
|
-
def new_report(name,params={})
|
179
|
-
Peddler::LegacyReports::Report.new(transport.dup, name, params)
|
180
|
-
end
|
181
|
-
|
182
|
-
# Requests a report. Returns true when successful.
|
183
|
-
#
|
184
|
-
# Possible report names: [:order, :open_listings, :open_listings_lite, :open_listings_liter]
|
185
|
-
#
|
186
|
-
# client.generate_report :order, :number_of_days => 15
|
187
|
-
#
|
188
|
-
# A word of caution. Open listings may crap up with larger inventories.
|
189
|
-
def generate_report(name,params={})
|
190
|
-
Peddler::LegacyReports.generate(transport, name, params)
|
191
|
-
end
|
192
|
-
|
193
|
-
# Creates an unshipped order report. Takes on some optional parameters, such as :id, :starts_at, :ends_at. By default,
|
194
|
-
# it will request a new unshipped order report for the past seven days.
|
195
|
-
#
|
196
|
-
# report = client.new_unshipped_orders_report
|
197
|
-
# report.status
|
198
|
-
# => "_SUBMITTED_"
|
199
|
-
# sleep(60)
|
200
|
-
# report.status!
|
201
|
-
# => "_DONE_"
|
202
|
-
# p report.unshipped_orders
|
203
|
-
#
|
204
|
-
def new_unshipped_orders_report(params={})
|
205
|
-
Peddler::Reports::UnshippedOrdersReport.new(transport.dup, params)
|
206
|
-
end
|
207
|
-
|
208
|
-
# Returns status of most recent reports. Optional "count" defaults to 10. Name can be [ :upload, :order, :batch_refund, :open_listings, :open_listings_lite, :open_listings_liter ].
|
209
|
-
#
|
210
|
-
# reports = client.latest_reports :order, :count => 1
|
211
|
-
# reports[0]
|
212
|
-
# => #<Peddler::LegacyReports::ReportStatus starts_at="07-29-2009:10-00-06" ...
|
213
|
-
#
|
214
|
-
def latest_reports(name,params={})
|
215
|
-
Peddler::LegacyReports.latest(transport, name, params)
|
216
|
-
end
|
217
|
-
|
218
|
-
# Decodes tab-delimited content into an array of OpenStruct objects.
|
219
|
-
def detab(msg)
|
220
|
-
Peddler::Handlers::TabDelimitedHandler.decode_response(msg)
|
221
|
-
end
|
222
|
-
|
223
|
-
private
|
224
|
-
|
225
|
-
def transport #:nodoc:all
|
226
|
-
@transport ||= Peddler::Transport.new
|
227
|
-
end
|
228
|
-
end
|
229
|
-
end
|
data/lib/peddler/handlers.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
module Peddler
|
2
|
-
module Handlers
|
3
|
-
class XMLHandler
|
4
|
-
|
5
|
-
# Parses legacy responses to queries on statuses of generated reports and inventory uploads.
|
6
|
-
def self.parse_legacy(hash)
|
7
|
-
if hash['Batches']
|
8
|
-
[hash['Batches']['Batch']].flatten.collect { |input| Peddler::LegacyReports::UploadStatus.new(input) }
|
9
|
-
elsif hash['Reports']
|
10
|
-
[hash['Reports']['Report']].flatten.collect { |input| Peddler::LegacyReports::ReportStatus.new(input) }
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
class TabDelimitedHandler
|
16
|
-
# Decodes tab-delimited content into an array of OpenStruct objects. It
|
17
|
-
# assumes first line contains parameter names.
|
18
|
-
def self.decode_response(res, &block)
|
19
|
-
if block_given?
|
20
|
-
res.scan(/[^\n]+/, &block)
|
21
|
-
else
|
22
|
-
lines = res.split("\n")
|
23
|
-
if lines.size > 1
|
24
|
-
params = lines[0].split("\t").collect{ |value| value.gsub(/-/, '_') }
|
25
|
-
params_size = params.size
|
26
|
-
(1..(lines.size - 1)).collect do |line_key|
|
27
|
-
values = lines[line_key].split("\t")
|
28
|
-
data = (0..(params_size - 1)).inject({}) { |memo, key| memo.merge( { params[key] => values[key] } ) }
|
29
|
-
OpenStruct.new(data)
|
30
|
-
end
|
31
|
-
else
|
32
|
-
res
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|