peddler 0.2.3 → 0.2.4

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  (The MIT License)
2
2
 
3
- Copyright (c) 2009 Hakan Şenol Ensari
3
+ Copyright (c) 2009 Paper Cavalier
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining
6
6
  a copy of this software and associated documentation files (the
data/README.rdoc CHANGED
@@ -7,17 +7,17 @@ Peddler is a Ruby wrapper to the Amazon Inventory management API.
7
7
  Fire off a client:
8
8
 
9
9
  client = Peddler::Client.new(
10
- :username => "foo@bar.com",
11
- :password => "secret",
12
- :region => "us")
10
+ :username => 'foo@bar.com',
11
+ :password => 'secret',
12
+ :region => :us)
13
13
 
14
14
  Create an inventory file:
15
15
 
16
16
  batch = client.new_inventory_batch
17
17
  item = client.new_inventory_item(
18
- :product_id => "1234567890",
18
+ :product_id => '1234567890',
19
19
  :price => 100.00,
20
- :sku => "SKU-123",
20
+ :sku => 'SKU-123',
21
21
  :quantity => 10)
22
22
  batch << item
23
23
  ...
@@ -47,10 +47,10 @@ Now that you have diligently processed the orders, post back the results to Amaz
47
47
 
48
48
  feed = client.new_order_fulfillment_feed
49
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")
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
54
  feed << fulfilled_order
55
55
 
56
56
  Again, repeat until done and upload:
@@ -72,13 +72,13 @@ Finally, check the report:
72
72
  p feed.download.to_s
73
73
  => ...
74
74
 
75
- Sadly, you also have an order you can't fulfill. No problem. The workflow is similar:
75
+ Sadly, you also have an order you can't fulfill and haven't shipped yet. No problem. The workflow is similar:
76
76
 
77
77
  feed = client.new_order_cancellation_feed
78
78
  cancelled_order = client.new_cancelled_order(
79
- :order_id => "123-1234567-1234567",
80
- :cancellation_reason_code => "NoInventory",
81
- :amazon_order_item_code => "12341234567890")
79
+ :order_id => '123-1234567-1234567',
80
+ :cancellation_reason_code => 'NoInventory',
81
+ :amazon_order_item_code => '12341234567890')
82
82
  feed << cancelled_order
83
83
  feed.upload
84
84
  sleep(60)
@@ -87,15 +87,15 @@ Sadly, you also have an order you can't fulfill. No problem. The workflow is sim
87
87
  p feed.download.to_s
88
88
  => ...
89
89
 
90
- Need to post a partial refund? You'll have to revert to the older batch refund API method:
90
+ Have already confirmed and need to post a partial refund? You'll have to revert to the older batch refund method:
91
91
 
92
92
  refunds = client.new_refund_batch
93
93
  refund = client.new_refund(
94
- :order_id => "123-1234567-1234567",
95
- :payments_transaction_id => "12341234567890",
94
+ :order_id => '123-1234567-1234567',
95
+ :payments_transaction_id => '12341234567890',
96
96
  :refund_amount => 1.00,
97
- :reason => "GeneralAdjustment",
98
- :message => "With our apologies.")
97
+ :reason => 'GeneralAdjustment',
98
+ :message => 'With our apologies.')
99
99
  refunds << refund
100
100
  refunds.upload
101
101
 
@@ -103,7 +103,7 @@ Great sales. For a change, let's download something different from Amazon. Here'
103
103
 
104
104
  preorder_report = client.new_report(
105
105
  :preorder,
106
- :product_line => "Books",
106
+ :product_line => 'Books',
107
107
  :frequency => 2)
108
108
  preorders = client.detab(preorder_report.body)
109
109
  p preorders.size
@@ -115,4 +115,4 @@ Great sales. For a change, let's download something different from Amazon. Here'
115
115
 
116
116
  Run rdoc and check the source for more detailed info.
117
117
 
118
- Copyright © 2009 Hakan Şenol Ensari, released under the MIT license
118
+ Copyright © 2009 Paper Cavalier, released under the MIT license
data/Rakefile CHANGED
@@ -6,11 +6,11 @@ begin
6
6
  s.name = 'peddler'
7
7
  s.summary = 'A Ruby wrapper to the Amazon Inventory Management API'
8
8
  s.email = 'hakan.ensari@papercavalier.com'
9
- s.homepage = 'http://snl.github.com/peddler'
9
+ s.homepage = 'http://papercavalier.github.com/peddler'
10
10
  s.description = 'Peddler is a Ruby wrapper to the Amazon Inventory Management API.'
11
11
  s.authors = ['Hakan Şenol Ensari']
12
12
  s.add_dependency 'activesupport', '>= 2.3.5'
13
- s.add_development_dependency 'rspec', '>= 1.2.9'
13
+ s.add_development_dependency 'rspec', '>= 1.3.0'
14
14
  end
15
15
  Jeweler::GemcutterTasks.new
16
16
  rescue LoadError
data/VERSION.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
- :patch: 3
3
- :major: 0
4
2
  :minor: 2
5
3
  :build:
4
+ :patch: 4
5
+ :major: 0
data/lib/peddler.rb CHANGED
@@ -3,12 +3,9 @@ module Peddler
3
3
  VERSION = '0.2.3'
4
4
  end
5
5
 
6
+ require 'active_support'
6
7
  require 'net/https'
7
8
  require 'ostruct'
8
- require 'tempfile'
9
- require 'time'
10
- require 'active_support'
11
-
12
9
  require File.dirname(__FILE__) + '/peddler/client'
13
10
  require File.dirname(__FILE__) + '/peddler/handlers'
14
11
  require File.dirname(__FILE__) + '/peddler/feeds'
@@ -16,4 +13,6 @@ require File.dirname(__FILE__) + '/peddler/inventory'
16
13
  require File.dirname(__FILE__) + '/peddler/legacy_reports'
17
14
  require File.dirname(__FILE__) + '/peddler/refunds'
18
15
  require File.dirname(__FILE__) + '/peddler/reports'
19
- require File.dirname(__FILE__) + '/peddler/transport'
16
+ require File.dirname(__FILE__) + '/peddler/transport'
17
+ require 'tempfile'
18
+ require 'time'
@@ -5,42 +5,34 @@
5
5
  module Peddler
6
6
  # This is the public interface of the Peddler library.
7
7
  class Client
8
- # Creates a client instance.
8
+ # Creates a client.
9
9
  #
10
10
  # client = Peddler::Client.new(
11
11
  # :username => 'foo@bar.com',
12
12
  # :password => 'secret',
13
- # :region => 'us'
13
+ # :region => :us
14
14
  # )
15
15
  #
16
- def initialize(params={})
17
- params.each_pair { |key, value| self.send("#{key}=", value.to_s) }
18
- end
19
-
20
- # Sets username.
21
- def username=(username)
22
- transport.username = username
23
- end
24
-
25
- # Sets password.
26
- def password=(password)
27
- transport.password = password
28
- end
29
-
30
- # Sets Amazon region.
16
+ # Alternatively, set attributes after creating the client:
31
17
  #
32
- # client.region = :jp
18
+ # client = Peddler::Client.new
19
+ # client.username = 'foo@bar.co.uk'
20
+ # client.password = 'tad_more_secret'
21
+ # client.region = 'uk'
33
22
  #
34
- def region=(region)
35
- transport.region = region.to_s
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) }
36
28
  end
37
29
 
38
30
  # Creates an inventory batch.
39
31
  #
40
32
  # batch = client.new_inventory_batch
41
33
  # book = new_inventory_item(
42
- #  :product_id => "1234567890",
43
- # :sku => "SKU-001",
34
+ #  :product_id => '1234567890',
35
+ # :sku => 'SKU-001',
44
36
  # :price => 10.00,
45
37
  # :quantity => 1)
46
38
  # batch << book
@@ -15,18 +15,22 @@ module Peddler
15
15
  class TabDelimitedHandler
16
16
  # Decodes tab-delimited content into an array of OpenStruct objects. It
17
17
  # assumes first line contains parameter names.
18
- def self.decode_response(res)
19
- lines = res.split("\n")
20
- if lines.size > 1
21
- params = lines[0].split("\t").collect{ |value| value.gsub(/-/, '_') }
22
- params_size = params.size
23
- (1..(lines.size - 1)).collect do |line_key|
24
- values = lines[line_key].split("\t")
25
- data = (0..(params_size - 1)).inject({}) { |memo, key| memo.merge( { params[key] => values[key] } ) }
26
- OpenStruct.new(data)
27
- end
18
+ def self.decode_response(res, &block)
19
+ if block_given?
20
+ res.scan(/[^\n]+/, &block)
28
21
  else
29
- res
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
30
34
  end
31
35
  end
32
36
  end
@@ -7,21 +7,21 @@ module Peddler
7
7
  def self.latest(transport,name,params={})
8
8
  transport.legacize_request
9
9
  if name == :upload
10
- transport.path << "catalog-upload/get-batches"
10
+ transport.path << 'catalog-upload/get-batches'
11
11
  transport.headers[:number_of_batches] = params[:count] if params[:count]
12
12
  else
13
- transport.path << "manual-reports/get-report-status"
13
+ transport.path << 'manual-reports/get-report-status'
14
14
  transport.headers[:report_name] = name.to_s.camelize
15
15
  transport.headers[:number_of_reports] = params[:count] if params[:count]
16
16
  end
17
17
  res = transport.execute_request
18
- Peddler::Handlers::XMLHandler.parse_legacy(Hash.from_xml(res))
18
+ Peddler::Handlers::XMLHandler.parse_legacy(Hash.from_xml(res)) || []
19
19
  end
20
20
 
21
21
  # Requests a report to be generated and returns the report instance if request is successful.
22
22
  def self.generate(transport,name,params={})
23
23
  transport.legacize_request
24
- transport.path << "manual-reports/generate-report-now"
24
+ transport.path << 'manual-reports/generate-report-now'
25
25
  transport.headers[:report_name] = name.to_s.camelize
26
26
  transport.headers.merge!(params)
27
27
  res = transport.execute_request
@@ -42,26 +42,27 @@ module Peddler
42
42
  @body ||= download
43
43
  end
44
44
 
45
- private
45
+ private
46
+
46
47
  def download
47
48
  return false if @name.nil? && @id.nil?
48
49
  case @name.to_s
49
- when "upload"
50
+ when 'upload'
50
51
  @transport.legacize_request
51
- @transport.path << "download/errorlog"
52
- @transport.headers["BatchID"] = @id
52
+ @transport.path << 'download/errorlog'
53
+ @transport.headers['BatchID'] = @id
53
54
  @transport.execute_request
54
55
  else
55
56
  @transport.legacize_request
56
- @transport.path << "download/report"
57
+ @transport.path << 'download/report'
57
58
  if @id.nil?
58
59
  @transport.headers[:report_name] = @name.to_s.camelize
59
60
  if @name == :preorder
60
- @transport.headers["productline"] = @product_line if @product_line
61
- @transport.headers["frequency"] = @frequency if @frequency
61
+ @transport.headers['productline'] = @product_line if @product_line
62
+ @transport.headers['frequency'] = @frequency if @frequency
62
63
  end
63
64
  else
64
- @transport.headers["ReportID"] = @id
65
+ @transport.headers['ReportID'] = @id
65
66
  end
66
67
  @transport.execute_request
67
68
  end
@@ -84,9 +85,9 @@ module Peddler
84
85
  class ReportStatus < Status
85
86
  def initialize(input)
86
87
  @keymap = {
87
- "reportstarttime" => "starts_at",
88
- "reportendtime" => "ends_at",
89
- "reportid" => "id"}
88
+ 'reportstarttime' => 'starts_at',
89
+ 'reportendtime' => 'ends_at',
90
+ 'reportid' => 'id' }
90
91
  super(input)
91
92
  end
92
93
  end
@@ -94,15 +95,15 @@ module Peddler
94
95
  class UploadStatus < Status
95
96
  def initialize(input)
96
97
  @keymap = {
97
- "status" => "status",
98
- "batchid" => "id",
99
- "numberofwarnings" => "number_of_warnings",
100
- "activateditems" => "activated_items",
101
- "itemsnotacivated" => "items_not_activated",
102
- "itemsnotactivated" => "items_not_activated",
103
- "dateandtime" => "datetime"}
98
+ 'status' => 'status',
99
+ 'batchid' => 'id',
100
+ 'numberofwarnings' => 'number_of_warnings',
101
+ 'activateditems' => 'activated_items',
102
+ 'itemsnotacivated' => 'items_not_activated',
103
+ 'itemsnotactivated' => 'items_not_activated',
104
+ 'dateandtime' => 'datetime' }
104
105
  super(input)
105
106
  end
106
107
  end
107
108
  end
108
- end
109
+ end
@@ -12,16 +12,16 @@ module Peddler
12
12
  attr_accessor :starts_at, :ends_at, :scheduled
13
13
 
14
14
  MAPPED_PARAMS = {
15
- "ReportID" => "id",
16
- "StartDate" => "starts_at",
17
- "EndDate" => "ends_at",
18
- "DownloadType" => "type",
19
- "Scheduled" => "scheduled",
20
- "ReportStatus" => "status",
21
- "SubmittedDate" => "submitted_at",
22
- "StartedProcessingDate" => "started_processing_at",
23
- "CompletedProcessingDate" => "completed_processing_at",
24
- "CompletedProcesssingDate" => "completed_processing_at"}
15
+ 'ReportID' => 'id',
16
+ 'StartDate' => 'starts_at',
17
+ 'EndDate' => 'ends_at',
18
+ 'DownloadType' => 'type',
19
+ 'Scheduled' => 'scheduled',
20
+ 'ReportStatus' => 'status',
21
+ 'SubmittedDate' => 'submitted_at',
22
+ 'StartedProcessingDate' => 'started_processing_at',
23
+ 'CompletedProcessingDate' => 'completed_processing_at',
24
+ 'CompletedProcesssingDate' => 'completed_processing_at'}
25
25
 
26
26
  # Creates new unshipped order report. It will send a request to
27
27
  # Amazon to generate the report if the report ID is not already set.
@@ -52,10 +52,10 @@ module Peddler
52
52
  def generate_report
53
53
  @transport.modernize_request
54
54
  @transport.query_params.merge!({
55
- "Action" => "generateReport",
56
- "startDate" => @starts_at,
57
- "endDate" => @ends_at,
58
- "downloadType" => @type})
55
+ 'Action' => 'generateReport',
56
+ 'startDate' => @starts_at,
57
+ 'endDate' => @ends_at,
58
+ 'downloadType' => @type})
59
59
  res = @transport.execute_request
60
60
  process_response(res)
61
61
  end
@@ -1,24 +1,29 @@
1
1
  module Peddler
2
2
  class PeddlerError < StandardError
3
3
  def initialize(msg)
4
- super("#{msg}")
4
+ super(msg)
5
5
  end
6
6
  end
7
7
 
8
8
  # Our work horse. Runs on top of Net::HTTP.
9
9
  class Transport
10
- API_HOSTS = {:us => "secure.amazon.com",
11
- :uk => "secure.amazon.co.uk",
12
- :de => "secure.amazon.de",
13
- :ca => "secure.amazon.ca",
14
- :fr => "secure.amazon.fr",
15
- :jp => "vendornet.amazon.co.jp" }
16
- BASE_HEADERS = {"User-Agent" => "Peddler/#{Peddler::VERSION}",
17
- "Content-Type" => "text/xml;charset=utf-8",
18
- "Cookie" => "x-main=YvjPkwfntqDKun0QEmVRPcTTZDMe?Tn?; ubid-main=002-8989859-9917520; ubid-tacbus=019-5423258-4241018;x-tacbus=vtm4d53DvX@Sc9LxTnAnxsFL3DorwxJa; ubid-tcmacb=087-8055947-0795529; ubid-ty2kacbus=161-5477122-2773524; session-id=087-178254-5924832;session-id-time=950660664"}
10
+ API_HOSTS = {
11
+ :us => 'secure.amazon.com',
12
+ :uk => 'secure.amazon.co.uk',
13
+ :de => 'secure.amazon.de',
14
+ :ca => 'secure.amazon.ca',
15
+ :fr => 'secure.amazon.fr',
16
+ :jp => 'vendornet.amazon.co.jp'
17
+ }
18
+
19
+ BASE_HEADERS = {
20
+ 'User-Agent' => "Peddler/#{Peddler::VERSION}",
21
+ 'Content-Type' => 'text/xml;charset=utf-8',
22
+ 'Cookie' => 'x-main=YvjPkwfntqDKun0QEmVRPcTTZDMe?Tn?; ubid-main=002-8989859-9917520; ubid-tacbus=019-5423258-4241018;x-tacbus=vtm4d53DvX@Sc9LxTnAnxsFL3DorwxJa; ubid-tcmacb=087-8055947-0795529; ubid-ty2kacbus=161-5477122-2773524; session-id=087-178254-5924832;session-id-time=950660664'
23
+ }
19
24
 
20
25
  BASE_PARAMS = {
21
- "Service" => "MerchantQueryService"
26
+ 'Service' => 'MerchantQueryService'
22
27
  }
23
28
 
24
29
  attr_writer :username, :password
@@ -26,23 +31,23 @@ module Peddler
26
31
 
27
32
  #Returns request instance
28
33
  def request
29
- req = request_method.new("#{self.path.gsub(/\/$/, "")}/#{self.query_string}")
30
- self.headers.each do |header, value|
34
+ req = request_method.new("#{path.gsub(/\/$/, "")}/#{query_string}")
35
+ headers.each do |header, value|
31
36
  if header.kind_of? Symbol
32
- req[header.to_s.gsub(/_/, "")] = value
37
+ req[header.to_s.gsub(/_/, '')] = value
33
38
  else
34
39
  req[header] = value
35
40
  end
36
41
  end
37
42
  req.basic_auth(@username, @password) if @username && @password
38
- req.body = self.body unless self.body.empty?
43
+ req.body = body if body
39
44
  req
40
45
  end
41
46
 
42
47
  def execute_request
43
48
  begin
44
- self.conn.start do |http|
45
- res = http.request(self.request)
49
+ conn.start do |http|
50
+ res = http.request(request)
46
51
  case res
47
52
  when Net::HTTPSuccess
48
53
  res.body
@@ -55,18 +60,18 @@ module Peddler
55
60
 
56
61
  def clear_request
57
62
  self.headers = BASE_HEADERS.dup
58
- self.body = ""
63
+ self.body = nil
59
64
  end
60
65
 
61
66
  def legacize_request
62
- self.clear_request
63
- self.path = "/exec/panama/seller-admin/"
67
+ clear_request
68
+ self.path = '/exec/panama/seller-admin/'
64
69
  self.query_params = {}
65
70
  end
66
71
 
67
72
  def modernize_request
68
- self.clear_request
69
- self.path = "/query/"
73
+ clear_request
74
+ self.path = '/query/'
70
75
  self.query_params = BASE_PARAMS.dup
71
76
  end
72
77
 
@@ -76,21 +81,22 @@ module Peddler
76
81
  if API_HOSTS.has_key?(region)
77
82
  @region = region
78
83
  else
79
- raise PeddlerError.new("Region not recognized")
84
+ raise PeddlerError.new('Region not recognized')
80
85
  end
81
86
  end
82
87
 
83
88
  def url
84
- URI.parse("https://#{self.host}#{self.path.gsub(/\/$/, "")}/#{self.query_string}")
89
+ URI.parse("https://#{host}#{path}#{query_string}")
85
90
  end
86
91
 
87
92
  def dump_headers(msg)
88
- msg.each_header do |key, value|
89
- p "#{key}=#{value}"
93
+ msg.each_header do |k, v|
94
+ p "#{k}=#{v}"
90
95
  end
91
96
  end
92
97
 
93
- protected
98
+ private
99
+
94
100
  #Returns the Net::HTTP instance.
95
101
  def conn
96
102
  if @conn
@@ -104,7 +110,7 @@ module Peddler
104
110
  end
105
111
 
106
112
  def request_method
107
- if !self.body.empty? || !self.query_params.empty?
113
+ if !body.nil? || (query_params && !query_params.empty?)
108
114
  Net::HTTP::Post
109
115
  else
110
116
  Net::HTTP::Get
@@ -116,20 +122,14 @@ module Peddler
116
122
  end
117
123
 
118
124
  def query_string
119
- unless query_params.empty?
120
- query_params.inject("?") do |out, pair|
121
- key, value = pair
122
- key = key.to_s.gsub(/_([a-z])/) { $1.upcase } if key.kind_of? Symbol
123
- value = value.httpdate if value.respond_to? :httpdate
124
- out += "&" if out.size > 1
125
- "#{out}#{url_encode(key)}=#{url_encode(value)}"
125
+ if query_params && !query_params.empty?
126
+ params = query_params.collect do |k, v|
127
+ k = k.to_s.gsub(/_([a-z])/) { $1.upcase } if k.kind_of? Symbol
128
+ v = v.httpdate if v.respond_to? :httpdate
129
+ "#{k}=#{v}"
126
130
  end
131
+ "?#{params.join('&')}"
127
132
  end
128
133
  end
129
-
130
- def url_encode(value)
131
- require 'cgi' unless defined?(CGI) && defined?(CGI::escape)
132
- CGI.escape(value.to_s)
133
- end
134
134
  end
135
135
  end
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(__FILE__), "/../spec_helper")
1
+ require File.join(File.dirname(__FILE__), '/../spec_helper')
2
2
 
3
3
  module Peddler
4
4
 
@@ -6,52 +6,59 @@ module Peddler
6
6
 
7
7
  before(:each) do
8
8
  @transport = Peddler::Transport.new
9
- @transport.username = "user"
10
- @transport.password = "secret"
11
- @transport.region = "us"
9
+ @transport.username = 'user'
10
+ @transport.password = 'secret'
11
+ @transport.region = :us
12
12
  end
13
13
 
14
- it "should switch regions" do
14
+ it 'should switch regions' do
15
15
  @transport.legacize_request
16
- @transport.region = "uk"
17
- @transport.url.host.should == "secure.amazon.co.uk"
16
+ @transport.region = :uk
17
+ @transport.url.host.should == 'secure.amazon.co.uk'
18
18
  end
19
19
 
20
- it "should raise error when region is invalid" do
21
- lambda { @transport.region = "foo" }.should raise_error(PeddlerError)
20
+ it 'should raise error when region is invalid' do
21
+ lambda { @transport.region = 'foo' }.should raise_error(PeddlerError)
22
22
  end
23
23
 
24
- it "should add path to legacy URL" do
24
+ it 'should add path to legacy URL' do
25
25
  @transport.legacize_request
26
- @transport.path << "foo"
27
- @transport.url.to_s.should == "https://secure.amazon.com/exec/panama/seller-admin/foo/"
26
+ @transport.path << 'foo'
27
+ @transport.url.to_s.should == 'https://secure.amazon.com/exec/panama/seller-admin/foo'
28
28
  end
29
29
 
30
- it "should add path to modern URL" do
30
+ it 'should add path to modern URL' do
31
31
  @transport.modernize_request
32
- @transport.path << "foo"
33
- @transport.url.to_s.should == "https://secure.amazon.com/query/foo/?Service=MerchantQueryService"
32
+ @transport.path << 'foo'
33
+ @transport.url.to_s.should == 'https://secure.amazon.com/query/foo?Service=MerchantQueryService'
34
34
  end
35
35
 
36
- it "should add query parameters to the modern URL" do
36
+ it 'should add query parameters to the modern URL' do
37
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"
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'
41
41
  end
42
42
 
43
- it "should url_encode query parameters" do
44
- @transport.modernize_request
45
- @transport.query_params["key"] = "!@#"
46
- @transport.url.to_s.should == "https://secure.amazon.com/query/?key=%21%40%23&Service=MerchantQueryService"
47
- end
48
-
49
- it "should authenticate request" do
43
+ it 'should authenticate request' do
50
44
  @transport.legacize_request
51
45
  req = @transport.request
52
- req["authorization"].should_not be(nil)
46
+ req['authorization'].should_not be(nil)
47
+ 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
52
+ 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
53
57
  end
54
58
 
59
+ it 'should get if there is no body or query parameter' do
60
+ @transport.send(:request_method).should == Net::HTTP::Get
61
+ end
55
62
  end
56
63
 
57
64
  end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,3 @@
1
- $: << File.join(File.dirname(__FILE__), "/../lib")
2
- require 'spec'
3
- require 'peddler'
1
+ $: << File.join(File.dirname(__FILE__), '/../lib')
2
+ require 'spec'
3
+ require 'peddler'
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: peddler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ hash: 31
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 2
9
+ - 4
10
+ version: 0.2.4
5
11
  platform: ruby
6
12
  authors:
7
13
  - "Hakan \xC5\x9Eenol Ensari"
@@ -9,29 +15,41 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2010-01-11 00:00:00 +00:00
18
+ date: 2010-07-01 00:00:00 +01:00
13
19
  default_executable:
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
22
  name: activesupport
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
20
26
  requirements:
21
27
  - - ">="
22
28
  - !ruby/object:Gem::Version
29
+ hash: 9
30
+ segments:
31
+ - 2
32
+ - 3
33
+ - 5
23
34
  version: 2.3.5
24
- version:
35
+ type: :runtime
36
+ version_requirements: *id001
25
37
  - !ruby/object:Gem::Dependency
26
38
  name: rspec
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
30
42
  requirements:
31
43
  - - ">="
32
44
  - !ruby/object:Gem::Version
33
- version: 1.2.9
34
- version:
45
+ hash: 27
46
+ segments:
47
+ - 1
48
+ - 3
49
+ - 0
50
+ version: 1.3.0
51
+ type: :development
52
+ version_requirements: *id002
35
53
  description: Peddler is a Ruby wrapper to the Amazon Inventory Management API.
36
54
  email: hakan.ensari@papercavalier.com
37
55
  executables: []
@@ -68,7 +86,7 @@ files:
68
86
  - spec/peddler/transport_spec.rb
69
87
  - spec/spec_helper.rb
70
88
  has_rdoc: true
71
- homepage: http://snl.github.com/peddler
89
+ homepage: http://papercavalier.github.com/peddler
72
90
  licenses: []
73
91
 
74
92
  post_install_message:
@@ -77,21 +95,27 @@ rdoc_options:
77
95
  require_paths:
78
96
  - lib
79
97
  required_ruby_version: !ruby/object:Gem::Requirement
98
+ none: false
80
99
  requirements:
81
100
  - - ">="
82
101
  - !ruby/object:Gem::Version
102
+ hash: 3
103
+ segments:
104
+ - 0
83
105
  version: "0"
84
- version:
85
106
  required_rubygems_version: !ruby/object:Gem::Requirement
107
+ none: false
86
108
  requirements:
87
109
  - - ">="
88
110
  - !ruby/object:Gem::Version
111
+ hash: 3
112
+ segments:
113
+ - 0
89
114
  version: "0"
90
- version:
91
115
  requirements: []
92
116
 
93
117
  rubyforge_project:
94
- rubygems_version: 1.3.5
118
+ rubygems_version: 1.3.7
95
119
  signing_key:
96
120
  specification_version: 3
97
121
  summary: A Ruby wrapper to the Amazon Inventory Management API