duty_calculator 0.0.5 → 0.0.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: da4d51bf8a977b247e81ccc0e740f83e6d32a513
4
- data.tar.gz: ad9381a27607fb9e63ab1d388ad5c2fba5fd05c8
3
+ metadata.gz: 3074281a85d5dd3f9b02fa22f529ec9950650a2f
4
+ data.tar.gz: ea02f8be01351e59884132c5b09327958bdb0c79
5
5
  SHA512:
6
- metadata.gz: dbc1d596554960cc2c69d812de23aa99cdd4197a13652028f61af8a7d99057c7444cb56ad69f3bc2eee424233f36282fd74d6ccc7bdf5d32351dec1fd82b5f5c
7
- data.tar.gz: f1531aff60374c32f2769ca52094464bbc5eb331e8c3d65a5a5de3372c848bdf239d168e340c6819bf4541f6e25f6f9e0afa2d352d90e1a0e3dde83a0490757a
6
+ metadata.gz: b10a1295f4f29c9f5590024754a99bd93d96fb55932f011f6683fe0a1be2bbb9579426ec067fd3a50e61667ec5a96c56393b903c6e3b8b16dc13f7e5cda30615
7
+ data.tar.gz: 99923120a6705604b59beb285d78e984e2f0ce16baad6c2068f2c74b3aebe562f8be1bf070d68609c571e78728d9f96b4dc4d525cbbf32434205af9439965095
data/Gemfile CHANGED
@@ -5,5 +5,8 @@ gemspec
5
5
  gem 'rspec', :require => 'spec'
6
6
  gem 'faraday'
7
7
  gem 'faraday_middleware'
8
+ gem 'hashie'
8
9
  gem 'multi_xml'
9
10
  gem 'addressable'
11
+ gem 'vcr'
12
+ gem 'webmock'
data/README.md CHANGED
@@ -37,6 +37,31 @@ end
37
37
 
38
38
  ```
39
39
 
40
+ ### Get Calculation
41
+
42
+ ```
43
+ duty_calculation = DutyCalculator::Calculation.get(params)
44
+
45
+ 0> duty_calculation.keys
46
+ => ["id", "item", "total_charges"]
47
+
48
+ 0> duty_calculation.total_charges.keys
49
+ => ["customs_value", "duty", "sales_tax", "total"]
50
+
51
+ 0> duty_calculation.total_charges.customs_value
52
+ => #<Hashie::Mash amount=#<Hashie::Mash currency="CAD" value=1556.0> name="FOB">
53
+
54
+ 0> duty_calculation.total_charges.sales_tax
55
+ => #<Hashie::Mash amount=#<Hashie::Mash currency="CAD" value=77.8> name="GST">
56
+
57
+ 0> duty_calculation.total_charges.duty
58
+ => #<Hashie::Mash amount=#<Hashie::Mash currency="CAD" value=0.0>>
59
+
60
+ 0> duty_calculation.total_charges.total
61
+ => #<Hashie::Mash amount=#<Hashie::Mash currency="CAD" value=77.8>>
62
+
63
+ ```
64
+
40
65
  ### Listing Categories
41
66
 
42
67
  ```ruby
@@ -83,6 +108,11 @@ end
83
108
  }
84
109
  ```
85
110
 
111
+ ## TODO
112
+
113
+ - Port other objects to response nicer objects with `Hashie::Mash`
114
+ - Coerce sub `Array` for `item` to use `Response` object
115
+
86
116
  ## Contributing
87
117
 
88
118
  1. Fork it ( https://github.com/[my-github-username]/duty_calculator/fork )
@@ -20,9 +20,11 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.7"
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "vcr", "~> 2.9"
24
+ spec.add_development_dependency "webmock", "~> 1.20"
23
25
  spec.add_dependency "faraday", "~> 0.9"
24
26
  spec.add_dependency "faraday_middleware", "~> 0.9"
25
- spec.add_runtime_dependency "hashie", "~> 2.1"
27
+ spec.add_runtime_dependency "hashie", "~> 3.3"
26
28
  spec.add_runtime_dependency "multi_xml", "~> 0.5"
27
29
  spec.add_runtime_dependency "addressable", "~> 2.3"
28
30
  end
@@ -3,10 +3,12 @@ require "duty_calculator/configuration"
3
3
  require "duty_calculator/currency"
4
4
  require "duty_calculator/category"
5
5
  require "duty_calculator/calculation"
6
+ require "duty_calculator/response"
6
7
  require "duty_calculator/error_messages"
7
8
 
8
9
  require "faraday"
9
10
  require "faraday_middleware"
11
+ require "hashie"
10
12
 
11
13
  module DutyCalculator
12
14
  class << self
@@ -1,4 +1,5 @@
1
1
  require "duty_calculator/client"
2
+ require "duty_calculator/response"
2
3
  require "addressable/uri"
3
4
  module DutyCalculator
4
5
  class Calculation
@@ -38,10 +39,11 @@ module DutyCalculator
38
39
  transformed_params = transform_params(validate_params(params))
39
40
  conn = DutyCalculator::Client.new
40
41
  resp = conn.get "#{DutyCalculator::Client.api_base}/calculation", transformed_params
41
- raise Exception, "Duty Calculator Error: #{DutyCalculator::ErrorMessages.for_code(resp.body["error"]["code"])}" if resp.body["error"]
42
+ hashed_resp = DutyCalculator::Response.new(resp.to_hash)
43
+ resp = Hashie::Mash.new(hashed_resp)
44
+ raise Exception, "Duty Calculator Error: #{DutyCalculator::ErrorMessages.for_code(resp.body.error.code)}" if resp.body.error
42
45
  raise Exception, "HTTP Status Code #{resp.status}" if resp.status.to_i != 200
43
- return resp.body
46
+ resp.body.duty_calculation
44
47
  end
45
-
46
48
  end
47
49
  end
@@ -0,0 +1,22 @@
1
+ require "hashie"
2
+ module DutyCalculator
3
+ class Response < Hash
4
+ include ::Hashie::Extensions::Coercion
5
+ coerce_value Hash, Response
6
+
7
+ def initialize(hash = {})
8
+ super
9
+ hash.each_pair do |k,v|
10
+ if k == '__content__' && v.to_s == 0.to_s
11
+ self['value'] = v.to_f
12
+ elsif k == '__content__' && v.to_i > 0
13
+ self['value'] = v.to_f
14
+ elsif k == '__content__'
15
+ self['value'] = v
16
+ else
17
+ self[k] = v
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,3 +1,3 @@
1
1
  module DutyCalculator
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module DutyCalculator
4
- describe Configuration do
4
+ describe Calculation do
5
5
  describe ".transform_params" do
6
6
  context "for a single product" do
7
7
  let(:params) do
@@ -21,8 +21,8 @@ module DutyCalculator
21
21
  it "makes a hash with numerical index keys for array values" do
22
22
  transformed = DutyCalculator::Calculation.transform_params(params)
23
23
 
24
- expect(transformed["from"]).to eq(params[:from])
25
- expect(transformed["cat"]).to eq({ 0 => params[:cat].first })
24
+ expect(transformed[:from]).to eq(params[:from])
25
+ expect(transformed[:cat]).to eq({ 0 => params[:cat].first })
26
26
  end
27
27
  end
28
28
 
@@ -44,8 +44,94 @@ module DutyCalculator
44
44
  it "makes a hash with numerical index keys for array values" do
45
45
  transformed = DutyCalculator::Calculation.transform_params(params)
46
46
 
47
- expect(transformed["from"]).to eq(params[:from])
48
- expect(transformed["cat"]).to eq({ 0 => params[:cat].first, 1 => params[:cat].last })
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
+ describe ".get" do
53
+ before do
54
+ DutyCalculator.configure do |config|
55
+ config.api_key = "DUTY_CALC"
56
+ config.sandbox = true
57
+ config.debug = true
58
+ end
59
+ end
60
+ context "for a single product" do
61
+ let(:params) do
62
+ {
63
+ from: "US",
64
+ to: "CA",
65
+ shipping_mode: "USPS",
66
+ insurance: 0.0,
67
+ currency: "USD",
68
+ origin: "US",
69
+ reference: "ORD12345",
70
+ preferential_rates: 0,
71
+ detailed_result: 1,
72
+ incl_hs_codes: 1,
73
+ shipping: 10.0,
74
+ cat: ["522"],
75
+ hs: ["9019100020", "9019100020"],
76
+ country_of_hs_code: ["CN"],
77
+ desc: ["Hydrotherapy Spa Bath"],
78
+ weight: ["1.0"],
79
+ weight_unit: ["lb"],
80
+ value: [ "1234.00" ],
81
+ sku: [ "300101" ],
82
+ qty: [ 1 ],
83
+ commercial_importer: 0,
84
+ classify_by: 'cat',
85
+ }
86
+ end
87
+ it 'makes a nice hash' do
88
+ VCR.use_cassette('calculate__nice_hash_for_single_product') do
89
+ duty_calculation = DutyCalculator::Calculation.get(params)
90
+ expect(duty_calculation.item.id.class).to eq(String)
91
+ expect(duty_calculation.item.hs_code.class).to eq(String)
92
+ expect(duty_calculation.item.sales_tax.amount.value.class).to eq(Float)
93
+ expect(duty_calculation.total_charges.duty.amount.currency.class).to eq(String)
94
+ expect(duty_calculation.total_charges.sales_tax.name).to eq("GST")
95
+ expect(duty_calculation.total_charges.sales_tax.amount.value.class).to eq(Float)
96
+ end
97
+ end
98
+ end
99
+ context "for multiple products" do
100
+ let(:params) do
101
+ {
102
+ from: "US",
103
+ to: "CA",
104
+ shipping_mode: "USPS",
105
+ insurance: 0.0,
106
+ currency: "USD",
107
+ origin: "US",
108
+ reference: "ORD12345",
109
+ preferential_rates: 0,
110
+ detailed_result: 1,
111
+ incl_hs_codes: 1,
112
+ shipping: 10.0,
113
+ cat: ["522","522"],
114
+ hs: ["9019100020", "9019100020"],
115
+ country_of_hs_code: ["CN", "DE"],
116
+ desc: ["Hydrotherapy Spa Bath", "Hydrotherapy Spa Bath"],
117
+ weight: ["1.0", "2.0"],
118
+ weight_unit: ["lb", "lb"],
119
+ value: [ "1234.00", "2345.67" ],
120
+ sku: [ "300101", "300102" ],
121
+ qty: [ 1, 2 ],
122
+ commercial_importer: 0,
123
+ classify_by: 'cat',
124
+ }
125
+ end
126
+
127
+ it 'makes a nice hash' do
128
+ VCR.use_cassette('calculate__nice_hash_for_multiple_products') do
129
+ duty_calculation = DutyCalculator::Calculation.get(params)
130
+ expect(duty_calculation.item.size).to eq(2)
131
+ expect(duty_calculation.total_charges.duty.amount.currency.class).to eq(String)
132
+ expect(duty_calculation.total_charges.sales_tax.name).to eq("GST")
133
+ expect(duty_calculation.total_charges.sales_tax.amount.value.class).to eq(Float)
134
+ end
49
135
  end
50
136
  end
51
137
  end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ module DutyCalculator
4
+ describe Response do
5
+ context ".initialize" do
6
+ it "coerces some uglyness" do
7
+ hash = {
8
+ "string_value" => "stringerific",
9
+ "__content__" => "should_be_string",
10
+ "nested_integer" => {
11
+ "__content__" => "1223"
12
+ },
13
+ "nested_zero" => {
14
+ "__content__" => "0"
15
+ }
16
+ }
17
+ response = DutyCalculator::Response.new(hash)
18
+ expect(response["string_value"].class).to eq(String)
19
+ expect(response.keys.include?("value")).to eq(true)
20
+ expect(response.keys.include?("__content__")).to_not eq(true)
21
+ expect(response["value"].class).to eq(String)
22
+ expect(response["nested_integer"]["value"].class).to eq(Float)
23
+ expect(response["nested_zero"]["value"].class).to eq(Float)
24
+ end
25
+ end
26
+ end
27
+ end
data/spec/spec_helper.rb CHANGED
@@ -5,10 +5,14 @@ require "duty_calculator"
5
5
  # loaded once.
6
6
  #
7
7
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
8
+ ABS_PATH = File.expand_path(File.dirname(File.dirname(__FILE__)))
9
+ Dir[File.join(ABS_PATH, "spec/support/**/*.rb")].each {|f| require f}
10
+
8
11
  RSpec.configure do |config|
9
12
  config.treat_symbols_as_metadata_keys_with_true_values = true
10
13
  config.run_all_when_everything_filtered = true
11
14
  config.filter_run :focus
15
+ config.raise_errors_for_deprecations!
12
16
 
13
17
  # Run specs in random order to surface order dependencies. If you find an
14
18
  # order dependency and want to debug it, you can fix the order by providing
@@ -0,0 +1,16 @@
1
+ require 'vcr'
2
+ require 'webmock'
3
+
4
+ VCR.configure do |c|
5
+ c.cassette_library_dir = File.join(ABS_PATH, "spec", "vcr")
6
+ c.hook_into :webmock
7
+ c.ignore_hosts '127.0.0.1', 'localhost'
8
+ end
9
+
10
+ RSpec.configure do |c|
11
+ c.treat_symbols_as_metadata_keys_with_true_values = true
12
+ c.around(:each, :vcr) do |example|
13
+ name = example.metadata[:full_description].split(/\s+/, 2).join("/").underscore.gsub(/[^\w\/]+/, "_")
14
+ VCR.use_cassette( name, :record => :new_episodes, :match_requests_on => [:query] ) { example.call }
15
+ end
16
+ end
@@ -0,0 +1,61 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://www.dutycalculator.com/api2.1/sandbox/DUTY_CALC/calculation?cat%5B%5D=522&cat%5B%5D=522&classify_by=cat&commercial_importer=0&country_of_hs_code%5B%5D=CN&country_of_hs_code%5B%5D=DE&currency=USD&desc%5B%5D=Hydrotherapy%20Spa%20Bath&desc%5B%5D=Hydrotherapy%20Spa%20Bath&detailed_result=1&from=US&hs%5B%5D=9019100020&hs%5B%5D=9019100020&incl_hs_codes=1&insurance=0.0&origin=US&preferential_rates=0&qty%5B%5D=1&qty%5B%5D=2&reference=ORD12345&shipping=10.0&shipping_mode=USPS&sku%5B%5D=300101&sku%5B%5D=300102&to=CA&value%5B%5D=1234.00&value%5B%5D=2345.67&weight%5B%5D=1.0&weight%5B%5D=2.0&weight_unit%5B%5D=lb&weight_unit%5B%5D=lb
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.9.1
12
+ Accept-Encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ Accept:
15
+ - "*/*"
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Server:
22
+ - nginx/1.6.1
23
+ Date:
24
+ - Mon, 30 Mar 2015 23:38:08 GMT
25
+ Content-Type:
26
+ - application/xml
27
+ Transfer-Encoding:
28
+ - chunked
29
+ Connection:
30
+ - keep-alive
31
+ X-Powered-By:
32
+ - PHP/5.5.9-1ubuntu4.5
33
+ Set-Cookie:
34
+ - DebugLevel=0; expires=Wed, 29-Apr-2015 23:38:02 GMT; Max-Age=2592000; path=/
35
+ - PHPSESSID=r063q1h863c4k1590p9n4fbsm0; path=/
36
+ Expires:
37
+ - Thu, 19 Nov 1981 08:52:00 GMT
38
+ Cache-Control:
39
+ - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
40
+ Pragma:
41
+ - no-cache
42
+ body:
43
+ encoding: UTF-8
44
+ string: "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<duty-calculation id=\"191674998\">\n\t<item
45
+ id=\"522\" hs-code=\"9019100020\" reference=\"0\" quality-score=\"validated\">\n\t\t<customs-value
46
+ name=\"FOB\">\n\t\t\t<amount currency=\"CAD\">1556</amount>\n\t\t</customs-value>\n\t\t<duty>\n\t\t\t<amount
47
+ currency=\"CAD\">0</amount>\n\t\t</duty>\n\t\t<sales-tax name=\"GST\">\n\t\t\t<amount
48
+ currency=\"CAD\">77.8</amount>\n\t\t</sales-tax>\n\t\t<total>\n\t\t\t<amount
49
+ currency=\"CAD\">77.8</amount>\n\t\t</total>\n\t</item>\n\t<item id=\"522\"
50
+ hs-code=\"9019100020\" reference=\"1\" quality-score=\"validated\">\n\t\t<customs-value
51
+ name=\"FOB\">\n\t\t\t<amount currency=\"CAD\">5915.49</amount>\n\t\t</customs-value>\n\t\t<duty>\n\t\t\t<amount
52
+ currency=\"CAD\">0</amount>\n\t\t</duty>\n\t\t<sales-tax name=\"GST\">\n\t\t\t<amount
53
+ currency=\"CAD\">295.77</amount>\n\t\t</sales-tax>\n\t\t<total>\n\t\t\t<amount
54
+ currency=\"CAD\">295.77</amount>\n\t\t</total>\n\t</item>\n\t<total-charges>\n\t\t<customs-value
55
+ name=\"FOB\">\n\t\t\t<amount currency=\"CAD\">7471.49</amount>\n\t\t</customs-value>\n\t\t<duty>\n\t\t\t<amount
56
+ currency=\"CAD\">0</amount>\n\t\t</duty>\n\t\t<sales-tax name=\"GST\">\n\t\t\t<amount
57
+ currency=\"CAD\">373.57</amount>\n\t\t</sales-tax>\n\t\t<total>\n\t\t\t<amount
58
+ currency=\"CAD\">373.57</amount>\n\t\t</total>\n\t</total-charges>\n</duty-calculation>\n"
59
+ http_version:
60
+ recorded_at: Mon, 30 Mar 2015 23:35:40 GMT
61
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,56 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://www.dutycalculator.com/api2.1/sandbox/DUTY_CALC/calculation?cat%5B%5D=522&classify_by=cat&commercial_importer=0&country_of_hs_code%5B%5D=CN&currency=USD&desc%5B%5D=Hydrotherapy%20Spa%20Bath&detailed_result=1&from=US&hs%5B%5D=9019100020&hs%5B%5D=9019100020&incl_hs_codes=1&insurance=0.0&origin=US&preferential_rates=0&qty%5B%5D=1&reference=ORD12345&shipping=10.0&shipping_mode=USPS&sku%5B%5D=300101&to=CA&value%5B%5D=1234.00&weight%5B%5D=1.0&weight_unit%5B%5D=lb
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.9.1
12
+ Accept-Encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ Accept:
15
+ - "*/*"
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Server:
22
+ - nginx/1.6.1
23
+ Date:
24
+ - Mon, 30 Mar 2015 23:38:04 GMT
25
+ Content-Type:
26
+ - application/xml
27
+ Transfer-Encoding:
28
+ - chunked
29
+ Connection:
30
+ - keep-alive
31
+ X-Powered-By:
32
+ - PHP/5.5.9-1ubuntu4.5
33
+ Set-Cookie:
34
+ - DebugLevel=0; expires=Wed, 29-Apr-2015 23:37:58 GMT; Max-Age=2592000; path=/
35
+ - PHPSESSID=39hst3dqjsj0pt69g6tij9j5r0; path=/
36
+ Expires:
37
+ - Thu, 19 Nov 1981 08:52:00 GMT
38
+ Cache-Control:
39
+ - no-store, no-cache, must-revalidate, post-check=0, pre-check=0
40
+ Pragma:
41
+ - no-cache
42
+ body:
43
+ encoding: UTF-8
44
+ string: "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<duty-calculation id=\"191674997\">\n\t<item
45
+ id=\"522\" hs-code=\"9019100020\" reference=\"0\" quality-score=\"validated\">\n\t\t<customs-value
46
+ name=\"FOB\">\n\t\t\t<amount currency=\"CAD\">1556</amount>\n\t\t</customs-value>\n\t\t<duty>\n\t\t\t<amount
47
+ currency=\"CAD\">0</amount>\n\t\t</duty>\n\t\t<sales-tax name=\"GST\">\n\t\t\t<amount
48
+ currency=\"CAD\">77.8</amount>\n\t\t</sales-tax>\n\t\t<total>\n\t\t\t<amount
49
+ currency=\"CAD\">77.8</amount>\n\t\t</total>\n\t</item>\n\t<total-charges>\n\t\t<customs-value
50
+ name=\"FOB\">\n\t\t\t<amount currency=\"CAD\">1556</amount>\n\t\t</customs-value>\n\t\t<duty>\n\t\t\t<amount
51
+ currency=\"CAD\">0</amount>\n\t\t</duty>\n\t\t<sales-tax name=\"GST\">\n\t\t\t<amount
52
+ currency=\"CAD\">77.8</amount>\n\t\t</sales-tax>\n\t\t<total>\n\t\t\t<amount
53
+ currency=\"CAD\">77.8</amount>\n\t\t</total>\n\t</total-charges>\n</duty-calculation>\n"
54
+ http_version:
55
+ recorded_at: Mon, 30 Mar 2015 23:35:36 GMT
56
+ recorded_with: VCR 2.9.3
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: duty_calculator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Hanley
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-03-30 00:00:00.000000000 Z
12
+ date: 2015-03-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -39,6 +39,34 @@ dependencies:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '10.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: vcr
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '2.9'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '2.9'
56
+ - !ruby/object:Gem::Dependency
57
+ name: webmock
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '1.20'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '1.20'
42
70
  - !ruby/object:Gem::Dependency
43
71
  name: faraday
44
72
  requirement: !ruby/object:Gem::Requirement
@@ -73,14 +101,14 @@ dependencies:
73
101
  requirements:
74
102
  - - "~>"
75
103
  - !ruby/object:Gem::Version
76
- version: '2.1'
104
+ version: '3.3'
77
105
  type: :runtime
78
106
  prerelease: false
79
107
  version_requirements: !ruby/object:Gem::Requirement
80
108
  requirements:
81
109
  - - "~>"
82
110
  - !ruby/object:Gem::Version
83
- version: '2.1'
111
+ version: '3.3'
84
112
  - !ruby/object:Gem::Dependency
85
113
  name: multi_xml
86
114
  requirement: !ruby/object:Gem::Requirement
@@ -133,11 +161,16 @@ files:
133
161
  - lib/duty_calculator/configuration.rb
134
162
  - lib/duty_calculator/currency.rb
135
163
  - lib/duty_calculator/error_messages.rb
164
+ - lib/duty_calculator/response.rb
136
165
  - lib/duty_calculator/version.rb
137
166
  - spec/duty_calculator/calculation_spec.rb
138
167
  - spec/duty_calculator/configuration_spec.rb
139
168
  - spec/duty_calculator/currency_spec.rb
169
+ - spec/duty_calculator/response_spec.rb
140
170
  - spec/spec_helper.rb
171
+ - spec/support/vcr.rb
172
+ - spec/vcr/calculate__nice_hash_for_multiple_products.yml
173
+ - spec/vcr/calculate__nice_hash_for_single_product.yml
141
174
  homepage: https://github.com/tjhanley/duty-calculator
142
175
  licenses:
143
176
  - MIT
@@ -166,4 +199,8 @@ test_files:
166
199
  - spec/duty_calculator/calculation_spec.rb
167
200
  - spec/duty_calculator/configuration_spec.rb
168
201
  - spec/duty_calculator/currency_spec.rb
202
+ - spec/duty_calculator/response_spec.rb
169
203
  - spec/spec_helper.rb
204
+ - spec/support/vcr.rb
205
+ - spec/vcr/calculate__nice_hash_for_multiple_products.yml
206
+ - spec/vcr/calculate__nice_hash_for_single_product.yml