peddler 0.2.4 → 0.3.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.
@@ -1,65 +1,65 @@
1
- require File.join(File.dirname(__FILE__), '/../spec_helper')
1
+ require 'spec_helper'
2
2
 
3
3
  module Peddler
4
-
5
4
  describe Transport do
6
-
7
- before(:each) do
8
- @transport = Peddler::Transport.new
9
- @transport.username = 'user'
10
- @transport.password = 'secret'
11
- @transport.region = :us
5
+ let(:transport) do
6
+ transport = Peddler::Transport.new
7
+ transport.username = 'user'
8
+ transport.password = 'secret'
9
+ transport.region = :us
10
+ transport
12
11
  end
13
-
14
- it 'should switch regions' do
15
- @transport.legacize_request
16
- @transport.region = :uk
17
- @transport.url.host.should == 'secure.amazon.co.uk'
12
+
13
+ it 'switches regions' do
14
+ transport.legacize_request
15
+ transport.region = :uk
16
+ transport.url.host.should == 'secure.amazon.co.uk'
18
17
  end
19
-
20
- it 'should raise error when region is invalid' do
21
- lambda { @transport.region = 'foo' }.should raise_error(PeddlerError)
18
+
19
+ it 'raises error when region is invalid' do
20
+ lambda { transport.region = 'foo' }.should raise_error(PeddlerError)
22
21
  end
23
-
24
- it 'should add path to legacy URL' do
25
- @transport.legacize_request
26
- @transport.path << 'foo'
27
- @transport.url.to_s.should == 'https://secure.amazon.com/exec/panama/seller-admin/foo'
22
+
23
+ it 'adds path to legacy URL' do
24
+ transport.legacize_request
25
+ transport.path << 'foo'
26
+ transport.url.to_s.should == 'https://secure.amazon.com/exec/panama/seller-admin/foo'
28
27
  end
29
-
30
- it 'should add path to modern URL' do
31
- @transport.modernize_request
32
- @transport.path << 'foo'
33
- @transport.url.to_s.should == 'https://secure.amazon.com/query/foo?Service=MerchantQueryService'
28
+
29
+ it 'adds path to modern URL' do
30
+ transport.modernize_request
31
+ transport.path << 'foo'
32
+ transport.url.to_s.should == 'https://secure.amazon.com/query/foo?Service=MerchantQueryService'
34
33
  end
35
-
36
- it 'should add query parameters to the modern URL' do
37
- @transport.modernize_request
38
- @transport.query_params['key1'] = 'val1'
39
- @transport.query_params['key2'] = 'val2'
40
- @transport.url.to_s.should == 'https://secure.amazon.com/query/?key1=val1&key2=val2&Service=MerchantQueryService'
34
+
35
+ it 'adds query parameters to the modern URL' do
36
+ transport.modernize_request
37
+ transport.query_params['key1'] = 'val1'
38
+ transport.query_params['key2'] = 'val2'
39
+ uri = URI.parse(transport.url.to_s)
40
+ keys = uri.query.split('&').map{ |param| param.match(/(.*)=/)[1] }
41
+ keys.should include('key1')
42
+ keys.should include('key2')
41
43
  end
42
-
43
- it 'should authenticate request' do
44
- @transport.legacize_request
45
- req = @transport.request
44
+
45
+ it 'authenticates request' do
46
+ transport.legacize_request
47
+ req = transport.request
46
48
  req['authorization'].should_not be(nil)
47
49
  end
48
-
49
- it 'should post if there is a body' do
50
- @transport.body = 'foo'
51
- @transport.send(:request_method).should == Net::HTTP::Post
50
+
51
+ it 'posts if there is a body' do
52
+ transport.body = 'foo'
53
+ transport.send(:request_method).should == Net::HTTP::Post
52
54
  end
53
-
54
- it 'should post if there is a query parameter' do
55
- @transport.query_params = { :foo => 'bar' }
56
- @transport.send(:request_method).should == Net::HTTP::Post
55
+
56
+ it 'posts if there is a query parameter' do
57
+ transport.query_params = { :foo => 'bar' }
58
+ transport.send(:request_method).should == Net::HTTP::Post
57
59
  end
58
-
59
- it 'should get if there is no body or query parameter' do
60
- @transport.send(:request_method).should == Net::HTTP::Get
60
+
61
+ it 'gets if there is no body or query parameter' do
62
+ transport.send(:request_method).should == Net::HTTP::Get
61
63
  end
62
64
  end
63
-
64
- end
65
-
65
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,7 @@
1
- $: << File.join(File.dirname(__FILE__), '/../lib')
2
- require 'spec'
3
- require 'peddler'
1
+ require "rubygems"
2
+ require "bundler/setup"
3
+ require "rspec"
4
+
5
+ require File.expand_path("../../lib/peddler", __FILE__)
6
+
7
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
@@ -0,0 +1,2 @@
1
+ key: KEY
2
+ secret: SECRET
@@ -0,0 +1,3 @@
1
+ def amazon
2
+ @amazon ||= YAML::load_file(File.dirname(__FILE__) + "/amazon.yml")
3
+ end
@@ -0,0 +1,13 @@
1
+ require 'vcr'
2
+
3
+ VCR.config do |c|
4
+ c.cassette_library_dir = File.dirname(__FILE__) + '/../fixtures/cassette_library'
5
+ c.http_stubbing_library = :webmock
6
+ c.default_cassette_options = {
7
+ :record => :new_episodes
8
+ }
9
+ end
10
+
11
+ RSpec.configure do |config|
12
+ config.extend VCR::RSpec::Macros
13
+ end
data/spec_rubies ADDED
@@ -0,0 +1,2 @@
1
+ rvm rbx@peddler,ree@peddler,1.9.2@peddler exec bundle install
2
+ rvm rbx@peddler,ree@peddler,1.9.2@peddler rake
metadata CHANGED
@@ -1,21 +1,21 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: peddler
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 2
9
- - 4
10
- version: 0.2.4
8
+ - 3
9
+ - 0
10
+ version: 0.3.0
11
11
  platform: ruby
12
12
  authors:
13
- - "Hakan \xC5\x9Eenol Ensari"
13
+ - Hakan Ensari
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-07-01 00:00:00 +01:00
18
+ date: 2010-10-20 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -26,46 +26,112 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- hash: 9
29
+ hash: 7
30
30
  segments:
31
31
  - 2
32
32
  - 3
33
- - 5
34
- version: 2.3.5
33
+ - 2
34
+ version: 2.3.2
35
35
  type: :runtime
36
36
  version_requirements: *id001
37
37
  - !ruby/object:Gem::Dependency
38
- name: rspec
38
+ name: rdiscount
39
39
  prerelease: false
40
40
  requirement: &id002 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
- - - ">="
43
+ - - ~>
44
44
  - !ruby/object:Gem::Version
45
- hash: 27
45
+ hash: 5
46
46
  segments:
47
47
  - 1
48
- - 3
49
- - 0
50
- version: 1.3.0
48
+ - 6
49
+ - 5
50
+ version: 1.6.5
51
51
  type: :development
52
52
  version_requirements: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ name: sdoc-helpers
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ hash: 19
62
+ segments:
63
+ - 0
64
+ - 1
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
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ hash: 31
94
+ segments:
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
103
+ prerelease: false
104
+ requirement: &id006 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ hash: 7
110
+ segments:
111
+ - 1
112
+ - 4
113
+ - 0
114
+ version: 1.4.0
115
+ type: :development
116
+ version_requirements: *id006
53
117
  description: Peddler is a Ruby wrapper to the Amazon Inventory Management API.
54
- email: hakan.ensari@papercavalier.com
118
+ email:
119
+ - hakan.ensari@papercavalier.com
55
120
  executables: []
56
121
 
57
122
  extensions: []
58
123
 
59
- extra_rdoc_files:
60
- - LICENSE
61
- - README.rdoc
124
+ extra_rdoc_files: []
125
+
62
126
  files:
63
127
  - .gitignore
64
- - History.txt
128
+ - .rspec
129
+ - .rvmrc
130
+ - Gemfile
131
+ - Gemfile.lock
65
132
  - LICENSE
66
- - README.rdoc
133
+ - README.md
67
134
  - Rakefile
68
- - VERSION.yml
69
135
  - init.rb
70
136
  - lib/peddler.rb
71
137
  - lib/peddler/client.rb
@@ -76,6 +142,9 @@ files:
76
142
  - lib/peddler/refunds.rb
77
143
  - lib/peddler/reports.rb
78
144
  - lib/peddler/transport.rb
145
+ - lib/peddler/version.rb
146
+ - mussels.jpg
147
+ - peddler.gemspec
79
148
  - spec/peddler/client_spec.rb
80
149
  - spec/peddler/feeds_spec.rb
81
150
  - spec/peddler/handlers_spec.rb
@@ -85,13 +154,17 @@ files:
85
154
  - spec/peddler/reports_spec.rb
86
155
  - spec/peddler/transport_spec.rb
87
156
  - spec/spec_helper.rb
157
+ - spec/support/amazon.yml.example
158
+ - spec/support/amazon_credentials.rb
159
+ - spec/support/vcr.rb
160
+ - spec_rubies
88
161
  has_rdoc: true
89
- homepage: http://papercavalier.github.com/peddler
162
+ homepage: http://github.com/papercavalier/peddler
90
163
  licenses: []
91
164
 
92
165
  post_install_message:
93
- rdoc_options:
94
- - --charset=UTF-8
166
+ rdoc_options: []
167
+
95
168
  require_paths:
96
169
  - lib
97
170
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -114,7 +187,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
187
  version: "0"
115
188
  requirements: []
116
189
 
117
- rubyforge_project:
190
+ rubyforge_project: peddler
118
191
  rubygems_version: 1.3.7
119
192
  signing_key:
120
193
  specification_version: 3
@@ -129,3 +202,6 @@ test_files:
129
202
  - spec/peddler/reports_spec.rb
130
203
  - spec/peddler/transport_spec.rb
131
204
  - spec/spec_helper.rb
205
+ - spec/support/amazon.yml.example
206
+ - spec/support/amazon_credentials.rb
207
+ - spec/support/vcr.rb
data/History.txt DELETED
@@ -1,17 +0,0 @@
1
- == 0.1.0 / 2009-08-14
2
- * First public release.
3
- == 0.1.1 / 2009-08-15
4
- * Bumping gem to tag correctly on Github.
5
- == 0.1.2 / 2009-08-17
6
- * Minor stuff.
7
- == 0.1.3 / 2009-11-06
8
- * Nothing major.
9
- == 0.2.0 / 2010-01-10
10
- * Switched to ActiveSupport under the hood.
11
- * Added a purge_inventory short-hand method to the client class.
12
- == 0.2.1 / 2010-01-10
13
- * Nasty bug.
14
- == 0.2.2 / 2010-01-10
15
- * Another nasty bug.
16
- == 0.2.3 / 2010-01-10
17
- * Bump
data/README.rdoc DELETED
@@ -1,118 +0,0 @@
1
- = Peddler
2
-
3
- Peddler is a Ruby wrapper to the Amazon Inventory management API.
4
-
5
- == Example usage
6
-
7
- Fire off a client:
8
-
9
- client = Peddler::Client.new(
10
- :username => 'foo@bar.com',
11
- :password => 'secret',
12
- :region => :us)
13
-
14
- Create an inventory file:
15
-
16
- batch = client.new_inventory_batch
17
- item = client.new_inventory_item(
18
- :product_id => '1234567890',
19
- :price => 100.00,
20
- :sku => 'SKU-123',
21
- :quantity => 10)
22
- batch << item
23
- ...
24
-
25
- Repeat ad infinitum and upload:
26
-
27
- batch.upload
28
-
29
- The batch now should have an upload ID. Go ahead and check the error log:
30
-
31
- upload_log = client.new_report(
32
- :upload,
33
- :id => batch.id)
34
- upload_log.body
35
- => "Feed Processing Summary:\n\tNumber of records processed\t\t1\n\tNumber of records successful\t\t1\n\n"
36
-
37
- You're done listing and are wondering if you have any new orders:
38
-
39
- orders_report = client.new_report :order
40
- orders = client.detab(orders_report.body)
41
- p orders.size
42
- => 1500
43
- p orders[0].item_name
44
- => "A Thousand Plateaus: Capitalism and Schizophrenia (Paperback) by Gilles Deleuze"
45
-
46
- Now that you have diligently processed the orders, post back the results to Amazon:
47
-
48
- feed = client.new_order_fulfillment_feed
49
- fulfilled_order = client.new_fulfilled_order(
50
- :order_id => '123-1234567-1234567',
51
- :order_date => '2009-08-01',
52
- :carrier_code => 'USPS',
53
- :tracking_number => '0308 0330 0000 0000 0000')
54
- feed << fulfilled_order
55
-
56
- Again, repeat until done and upload:
57
-
58
- feed.upload
59
-
60
- Curious to see the processing report?
61
-
62
- p feed.status
63
- => "_SUBMITTED_"
64
-
65
- Refresh until you get:
66
-
67
- p feed.status!
68
- => "_DONE_"
69
-
70
- Finally, check the report:
71
-
72
- p feed.download.to_s
73
- => ...
74
-
75
- Sadly, you also have an order you can't fulfill and haven't shipped yet. No problem. The workflow is similar:
76
-
77
- feed = client.new_order_cancellation_feed
78
- cancelled_order = client.new_cancelled_order(
79
- :order_id => '123-1234567-1234567',
80
- :cancellation_reason_code => 'NoInventory',
81
- :amazon_order_item_code => '12341234567890')
82
- feed << cancelled_order
83
- feed.upload
84
- sleep(60)
85
- feed.status!
86
- => "_DONE_"
87
- p feed.download.to_s
88
- => ...
89
-
90
- Have already confirmed and need to post a partial refund? You'll have to revert to the older batch refund method:
91
-
92
- refunds = client.new_refund_batch
93
- refund = client.new_refund(
94
- :order_id => '123-1234567-1234567',
95
- :payments_transaction_id => '12341234567890',
96
- :refund_amount => 1.00,
97
- :reason => 'GeneralAdjustment',
98
- :message => 'With our apologies.')
99
- refunds << refund
100
- refunds.upload
101
-
102
- Great sales. For a change, let's download something different from Amazon. Here's a preorder report:
103
-
104
- preorder_report = client.new_report(
105
- :preorder,
106
- :product_line => 'Books',
107
- :frequency => 2)
108
- preorders = client.detab(preorder_report.body)
109
- p preorders.size
110
- => 2000
111
- p preorders[0].asin
112
- => "1234567890"
113
- p preorders[0].average_asking_price
114
- => "100"
115
-
116
- Run rdoc and check the source for more detailed info.
117
-
118
- Copyright © 2009 Paper Cavalier, released under the MIT license
data/VERSION.yml DELETED
@@ -1,5 +0,0 @@
1
- ---
2
- :minor: 2
3
- :build:
4
- :patch: 4
5
- :major: 0