duty_calculator 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5ed8beb4c4232821afa3d6f8be62dd98ed3b179f
4
- data.tar.gz: ec47b5f65e53b2be578322d7bf25d04737692c7f
3
+ metadata.gz: da4d51bf8a977b247e81ccc0e740f83e6d32a513
4
+ data.tar.gz: ad9381a27607fb9e63ab1d388ad5c2fba5fd05c8
5
5
  SHA512:
6
- metadata.gz: 69ae696b897280cf5a2376a8a06fc87d7b784d87bd0acb3d59ec073af2ccd9668e134a38d1cce1d8e6edebda096ecc073a97be17375077e4fb40224ab3b67865
7
- data.tar.gz: 88dbb06e724660c0ee0285cf651e13a3caf633f4f7fec2c18a8253918022a11c8a0df29d57e11e61d9d42ce2e849b318b5c50092593268f0351bcab96e63df39
6
+ metadata.gz: dbc1d596554960cc2c69d812de23aa99cdd4197a13652028f61af8a7d99057c7444cb56ad69f3bc2eee424233f36282fd74d6ccc7bdf5d32351dec1fd82b5f5c
7
+ data.tar.gz: f1531aff60374c32f2769ca52094464bbc5eb331e8c3d65a5a5de3372c848bdf239d168e340c6819bf4541f6e25f6f9e0afa2d352d90e1a0e3dde83a0490757a
@@ -6,8 +6,8 @@ require 'duty_calculator/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "duty_calculator"
8
8
  spec.version = DutyCalculator::VERSION
9
- spec.authors = ["Thomas Hanley"]
10
- spec.email = ["tom@walkerandcompany.com"]
9
+ spec.authors = ["Thomas Hanley", "Rachel Heaton"]
10
+ spec.email = ["tom@walkerandcompany.com", "rachel@walkerandcompany.com"]
11
11
  spec.summary = %q{Wrapper for dutycalculator.com}
12
12
  spec.description = %q{API documentation http://www.dutycalculator.com/api-center/dutycalculator-api-2-1-documentation/}
13
13
  spec.homepage = "https://github.com/tjhanley/duty-calculator"
@@ -16,26 +16,32 @@ module DutyCalculator
16
16
  raise ArgumentError, "Missing arguments from hash #{msg.to_s}" if msg.size >= 1
17
17
  return params
18
18
  end
19
- end
20
19
 
21
- def self.get(params={})
22
- qs = params.collect do |k,v|
23
- if v.kind_of?(Array)
24
- memo = ""
25
- v.each_with_index do |value, index|
26
- memo << "#{k}[#{index}]=#{value}"
27
- memo << "&" if v.size > (index+1)
28
- end
29
- memo
30
- else
31
- "#{k}=#{v}"
20
+ def transform_params(params)
21
+ params.inject({}) do |transformed, key_value|
22
+ k = key_value.first
23
+ v = key_value.last
24
+ if v.kind_of?(Array)
25
+ transformed[k] = {}
26
+ v.each_with_index do |value, index|
27
+ transformed[k][index] = value
32
28
  end
29
+ else
30
+ transformed[k] = v
33
31
  end
32
+ transformed
33
+ end
34
+ end
35
+ end
36
+
37
+ def self.get(params={})
38
+ transformed_params = transform_params(validate_params(params))
34
39
  conn = DutyCalculator::Client.new
35
- resp = conn.get "#{DutyCalculator::Client.api_base}/calculation?#{qs.join('&')}"
40
+ resp = conn.get "#{DutyCalculator::Client.api_base}/calculation", transformed_params
36
41
  raise Exception, "Duty Calculator Error: #{DutyCalculator::ErrorMessages.for_code(resp.body["error"]["code"])}" if resp.body["error"]
37
42
  raise Exception, "HTTP Status Code #{resp.status}" if resp.status.to_i != 200
38
43
  return resp.body
39
44
  end
45
+
40
46
  end
41
47
  end
@@ -6,8 +6,6 @@ module DutyCalculator
6
6
  # middleware
7
7
  faraday.use FaradayMiddleware::FollowRedirects
8
8
  faraday.use FaradayMiddleware::EncodeJson
9
- # request defs
10
- faraday.use Faraday::Request::UrlEncoded
11
9
  # response defs
12
10
  faraday.use Faraday::Response::ParseXml
13
11
  faraday.use Faraday::Response::Mashify
@@ -1,3 +1,3 @@
1
1
  module DutyCalculator
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ module DutyCalculator
4
+ describe Configuration do
5
+ describe ".transform_params" do
6
+ context "for a single product" do
7
+ let(:params) do
8
+ {
9
+ from: "US",
10
+ to: "CA",
11
+ shipping_mode: "USPS",
12
+ insurance: 0.0,
13
+ currency: "USD",
14
+ cat: [ "1234.00" ],
15
+ hs: [ "CA" ],
16
+ sku: [ "300101" ],
17
+ qty: [ 1 ]
18
+ }
19
+ end
20
+
21
+ it "makes a hash with numerical index keys for array values" do
22
+ transformed = DutyCalculator::Calculation.transform_params(params)
23
+
24
+ expect(transformed["from"]).to eq(params[:from])
25
+ expect(transformed["cat"]).to eq({ 0 => params[:cat].first })
26
+ end
27
+ end
28
+
29
+ context "for multiple products" do
30
+ let(:params) do
31
+ {
32
+ from: "US",
33
+ to: "CA",
34
+ shipping_mode: "USPS",
35
+ insurance: 0.0,
36
+ currency: "USD",
37
+ cat: [ "1234.00", "5678.00" ],
38
+ hs: [ "CA", "CA" ],
39
+ sku: [ "300101", "300102" ],
40
+ qty: [ 1, 2 ]
41
+ }
42
+ end
43
+
44
+ it "makes a hash with numerical index keys for array values" do
45
+ transformed = DutyCalculator::Calculation.transform_params(params)
46
+
47
+ expect(transformed["from"]).to eq(params[:from])
48
+ expect(transformed["cat"]).to eq({ 0 => params[:cat].first, 1 => params[:cat].last })
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: duty_calculator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Hanley
8
+ - Rachel Heaton
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2015-03-11 00:00:00.000000000 Z
12
+ date: 2015-03-30 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
@@ -111,6 +112,7 @@ dependencies:
111
112
  description: API documentation http://www.dutycalculator.com/api-center/dutycalculator-api-2-1-documentation/
112
113
  email:
113
114
  - tom@walkerandcompany.com
115
+ - rachel@walkerandcompany.com
114
116
  executables: []
115
117
  extensions: []
116
118
  extra_rdoc_files: []
@@ -132,6 +134,7 @@ files:
132
134
  - lib/duty_calculator/currency.rb
133
135
  - lib/duty_calculator/error_messages.rb
134
136
  - lib/duty_calculator/version.rb
137
+ - spec/duty_calculator/calculation_spec.rb
135
138
  - spec/duty_calculator/configuration_spec.rb
136
139
  - spec/duty_calculator/currency_spec.rb
137
140
  - spec/spec_helper.rb
@@ -160,6 +163,7 @@ signing_key:
160
163
  specification_version: 4
161
164
  summary: Wrapper for dutycalculator.com
162
165
  test_files:
166
+ - spec/duty_calculator/calculation_spec.rb
163
167
  - spec/duty_calculator/configuration_spec.rb
164
168
  - spec/duty_calculator/currency_spec.rb
165
169
  - spec/spec_helper.rb