peddler 0.2.4 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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