solidus_easypost 1.0.3 → 3.0.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.
Files changed (97) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +41 -0
  3. data/.gem_release.yml +5 -0
  4. data/.github/stale.yml +17 -0
  5. data/.github_changelog_generator +2 -0
  6. data/.gitignore +21 -0
  7. data/.rspec +2 -0
  8. data/.rubocop.yml +7 -0
  9. data/.rubocop_todo.yml +36 -0
  10. data/CHANGELOG.md +113 -0
  11. data/Gemfile +33 -0
  12. data/LICENSE +26 -0
  13. data/README.md +194 -0
  14. data/Rakefile +6 -0
  15. data/app/controllers/spree/admin/postage_labels_controller.rb +20 -0
  16. data/app/decorators/models/solidus_easypost/spree/carton_decorator.rb +38 -0
  17. data/app/decorators/models/solidus_easypost/spree/shipment_decorator.rb +47 -0
  18. data/app/decorators/models/solidus_easypost/spree/shipping_rate_decorator.rb +13 -0
  19. data/app/models/solidus_easypost/parcel_dimension.rb +34 -0
  20. data/app/models/solidus_easypost/return_authorization.rb +27 -0
  21. data/app/overrides/spree/admin/orders/_shipment/add_postage_label.html.erb.deface +10 -0
  22. data/bin/console +17 -0
  23. data/bin/rails +7 -0
  24. data/bin/rails-engine +13 -0
  25. data/bin/rails-sandbox +16 -0
  26. data/bin/rake +7 -0
  27. data/bin/sandbox +86 -0
  28. data/bin/setup +8 -0
  29. data/config/initializers/webhooks.rb +7 -0
  30. data/config/locales/en.yml +8 -0
  31. data/config/routes.rb +9 -0
  32. data/db/migrate/20140515024440_add_easy_post_fields_to_shipping_rate.rb +9 -0
  33. data/db/migrate/20201025110912_add_tracker_id_to_cartons.rb +6 -0
  34. data/lib/generators/solidus_easypost/install/install_generator.rb +28 -0
  35. data/lib/generators/solidus_easypost/install/templates/initializer.rb +26 -0
  36. data/lib/solidus_easypost/address_builder.rb +45 -0
  37. data/lib/solidus_easypost/calculator/base_dimension_calculator.rb +28 -0
  38. data/lib/solidus_easypost/calculator/weight_dimension_calculator.rb +22 -0
  39. data/lib/solidus_easypost/configuration.rb +34 -0
  40. data/lib/solidus_easypost/engine.rb +19 -0
  41. data/lib/solidus_easypost/errors/unknown_partial_resource_error.rb +11 -0
  42. data/lib/solidus_easypost/estimator.rb +37 -0
  43. data/lib/solidus_easypost/parcel_builder.rb +27 -0
  44. data/lib/solidus_easypost/shipment_builder.rb +32 -0
  45. data/lib/solidus_easypost/shipping_method_selector.rb +17 -0
  46. data/lib/solidus_easypost/shipping_rate_calculator.rb +9 -0
  47. data/lib/solidus_easypost/testing_support/factories/address_factory.rb +10 -0
  48. data/lib/solidus_easypost/testing_support/factories/product_factory.rb +7 -0
  49. data/lib/solidus_easypost/testing_support/factories/shipment_factory.rb +30 -0
  50. data/lib/solidus_easypost/testing_support/factories/shipping_method_factory.rb +8 -0
  51. data/lib/solidus_easypost/testing_support/factories/stock_location_factory.rb +10 -0
  52. data/lib/solidus_easypost/testing_support/factories/variant_factory.rb +7 -0
  53. data/lib/solidus_easypost/testing_support/factories.rb +3 -0
  54. data/lib/solidus_easypost/tracker_webhook_handler.rb +14 -0
  55. data/lib/solidus_easypost/version.rb +5 -0
  56. data/lib/solidus_easypost.rb +32 -0
  57. data/solidus_easypost.gemspec +41 -0
  58. data/spec/cassettes/address_builder/from_address.yml +65 -0
  59. data/spec/cassettes/address_builder/from_stock_location.yml +65 -0
  60. data/spec/cassettes/estimator.yml +269 -0
  61. data/spec/cassettes/integration/checkout.yml +377 -0
  62. data/spec/cassettes/integration/order_shipping/with_purchase_labels.yml +373 -0
  63. data/spec/cassettes/integration/order_shipping/without_purchase_labels.yml +251 -0
  64. data/spec/cassettes/parcel_builder/from_package.yml +63 -0
  65. data/spec/cassettes/parcel_builder/from_return_authorization.yml +63 -0
  66. data/spec/cassettes/postage_labels/show.yml +72 -0
  67. data/spec/cassettes/return_authorization.yml +310 -0
  68. data/spec/cassettes/shipment_builder/from_package.yml +251 -0
  69. data/spec/cassettes/shipment_builder/from_return_authorization.yml +251 -0
  70. data/spec/cassettes/shipment_builder/from_shipment.yml +250 -0
  71. data/spec/controllers/spree/admin/postage_labels_controller_spec.rb +18 -0
  72. data/spec/features/admin/postage_labels_spec.rb +18 -0
  73. data/spec/integration/checkout_spec.rb +45 -0
  74. data/spec/integration/order_shipping_spec.rb +33 -0
  75. data/spec/models/solidus_easypost/parcel_dimension_spec.rb +80 -0
  76. data/spec/models/solidus_easypost/return_authorization_spec.rb +17 -0
  77. data/spec/models/spree/carton_spec.rb +57 -0
  78. data/spec/models/spree/shipment_spec.rb +69 -0
  79. data/spec/models/spree/shipping_rate_spec.rb +23 -0
  80. data/spec/solidus_easypost/address_builder_spec.rb +17 -0
  81. data/spec/solidus_easypost/calculator/weight_dimension_calculator_spec.rb +39 -0
  82. data/spec/solidus_easypost/estimator_spec.rb +52 -0
  83. data/spec/solidus_easypost/parcel_builder_spec.rb +113 -0
  84. data/spec/solidus_easypost/shipment_builder_spec.rb +28 -0
  85. data/spec/solidus_easypost/shipping_method_selector_spec.rb +33 -0
  86. data/spec/solidus_easypost/shipping_rate_calculator_spec.rb +12 -0
  87. data/spec/solidus_easypost/tracker_webhook_handler_spec.rb +58 -0
  88. data/spec/solidus_easypost_spec.rb +19 -0
  89. data/spec/spec_helper.rb +31 -0
  90. data/spec/support/easypost.rb +5 -0
  91. data/spec/support/factory_bot.rb +3 -0
  92. data/spec/support/helpers/api_stubs.rb +40 -0
  93. data/spec/support/helpers/configuration.rb +28 -0
  94. data/spec/support/helpers/shipping_methods.rb +26 -0
  95. data/spec/support/solidus.rb +1 -0
  96. data/spec/support/vcr.rb +12 -0
  97. metadata +170 -142
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ FactoryBot.modify do
4
+ factory :shipment do
5
+ transient do
6
+ inventory_units { 1 }
7
+ end
8
+
9
+ after(:create) do |shipment, e|
10
+ create_list(:inventory_unit, e.inventory_units, shipment: shipment)
11
+ end
12
+
13
+ trait :with_easypost do
14
+ transient do
15
+ easypost_shipment_id { 'sh_test' }
16
+ easypost_rate_id { 'rt_test' }
17
+ end
18
+
19
+ after(:create) do |shipment, evaluator|
20
+ create(
21
+ :shipping_rate,
22
+ shipment: shipment,
23
+ selected: true,
24
+ easy_post_shipment_id: evaluator.easypost_shipment_id,
25
+ easy_post_rate_id: evaluator.easypost_rate_id,
26
+ )
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ FactoryBot.modify do
4
+ factory :shipping_method do
5
+ admin_name { 'Stuff' }
6
+ available_to_users { true }
7
+ end
8
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ FactoryBot.modify do
4
+ factory :stock_location do
5
+ address1 { '131 S 8th Ave' }
6
+ city { 'Manville' }
7
+ association(:state, name: 'New Jersey', abbr: 'NJ')
8
+ zipcode { '08835' }
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ FactoryBot.modify do
4
+ factory :variant do
5
+ weight { 10.0 }
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ Dir["#{__dir__}/factories/**/*.rb"].sort.each { |f| require f }
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusEasypost
4
+ class TrackerWebhookHandler
5
+ def self.call(payload)
6
+ return unless payload['description'] == 'tracker.updated'
7
+
8
+ carton = ::Spree::Carton.find_by(easy_post_tracker_id: payload['result']['id'])
9
+ return unless carton
10
+
11
+ ::Spree::Event.fire 'solidus_easypost.tracker.updated', carton: carton, payload: payload
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusEasypost
4
+ VERSION = '3.0.0'
5
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'solidus_core'
4
+ require 'solidus_support'
5
+ require 'deface'
6
+ require 'easypost'
7
+
8
+ require 'solidus_easypost/version'
9
+ require 'solidus_easypost/engine'
10
+ require 'solidus_easypost/configuration'
11
+ require 'solidus_easypost/address_builder'
12
+ require 'solidus_easypost/parcel_builder'
13
+ require 'solidus_easypost/shipment_builder'
14
+ require 'solidus_easypost/estimator'
15
+ require 'solidus_easypost/shipping_rate_calculator'
16
+ require 'solidus_easypost/shipping_method_selector'
17
+ require 'solidus_easypost/calculator/base_dimension_calculator'
18
+ require 'solidus_easypost/calculator/weight_dimension_calculator'
19
+ require 'solidus_easypost/tracker_webhook_handler'
20
+ require 'solidus_easypost/errors/unknown_partial_resource_error'
21
+
22
+ module SolidusEasypost
23
+ class << self
24
+ def configuration
25
+ @configuration ||= Configuration.new
26
+ end
27
+
28
+ def configure
29
+ yield configuration
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lib/solidus_easypost/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'solidus_easypost'
7
+ spec.version = SolidusEasypost::VERSION
8
+ spec.authors = ['Brendan Deere']
9
+ spec.email = 'brendan@stembolt.com'
10
+
11
+ spec.summary = 'EasyPost integration for Solidus stores.'
12
+ spec.homepage = 'https://github.com/solidusio-contrib/solidus_easypost'
13
+ spec.license = 'BSD-3-Clause'
14
+
15
+ spec.metadata['homepage_uri'] = spec.homepage
16
+ spec.metadata['source_code_uri'] = 'https://github.com/solidusio-contrib/solidus_easypost'
17
+
18
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.5')
19
+
20
+ # Specify which files should be added to the gem when it is released.
21
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
22
+ files = Dir.chdir(__dir__) { `git ls-files -z`.split("\x0") }
23
+
24
+ spec.files = files.grep_v(%r{^(test|spec|features)/})
25
+ spec.test_files = files.grep(%r{^(test|spec|features)/})
26
+ spec.bindir = "exe"
27
+ spec.executables = files.grep(%r{^exe/}) { |f| File.basename(f) }
28
+ spec.require_paths = ["lib"]
29
+
30
+ spec.add_dependency 'deface'
31
+ spec.add_dependency 'easypost'
32
+ spec.add_dependency 'solidus_core', ['>= 2.0.0', '< 4']
33
+ spec.add_dependency 'solidus_support', '~> 0.5'
34
+
35
+ spec.add_development_dependency 'solidus_dev_support', '~> 2.1'
36
+ spec.add_development_dependency 'vcr'
37
+ spec.add_development_dependency 'webmock'
38
+ spec.metadata = {
39
+ 'rubygems_mfa_required' => 'true'
40
+ }
41
+ end
@@ -0,0 +1,65 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.easypost.com/v2/addresses
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"address":{"street1":"215 N 7th Ave","street2":"Northwest","city":"Manville","zip":"08835","phone":"555-555-0199","company":"Company","name":"John
9
+ Doe","state":"NJ","country":"US"}}'
10
+ headers:
11
+ Accept-Encoding:
12
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
13
+ Accept:
14
+ - "*/*"
15
+ User-Agent:
16
+ - EasyPost/v2 RubyClient/3.1.3 Ruby/2.7.1-p83
17
+ Content-Type:
18
+ - application/json
19
+ Authorization:
20
+ - Basic Q3Z6WXR1ZGE2S1JJOUpqRzdTQUhiQTo=
21
+ response:
22
+ status:
23
+ code: 201
24
+ message: Created
25
+ headers:
26
+ X-Frame-Options:
27
+ - SAMEORIGIN
28
+ X-Xss-Protection:
29
+ - 1; mode=block
30
+ X-Content-Type-Options:
31
+ - nosniff
32
+ X-Ep-Request-Uuid:
33
+ - f168e8e35f6b556bee80bccb0003c274
34
+ Cache-Control:
35
+ - no-cache, no-store, must-revalidate, private
36
+ Pragma:
37
+ - no-cache
38
+ Expires:
39
+ - '0'
40
+ Location:
41
+ - "/api/v2/addresses/adr_67e48f267fee48c3b2175281b3e741ee"
42
+ Content-Type:
43
+ - application/json; charset=utf-8
44
+ X-Runtime:
45
+ - '0.046944'
46
+ Transfer-Encoding:
47
+ - chunked
48
+ X-Node:
49
+ - bigweb12sj
50
+ X-Version-Label:
51
+ - easypost-202009222104-7ce76ac125-master
52
+ X-Backend:
53
+ - easypost
54
+ X-Proxied:
55
+ - extlb2nuq a561deb64e
56
+ - intlb1nuq 8df81f0396
57
+ - intlb2sj 8df81f0396
58
+ Strict-Transport-Security:
59
+ - max-age=15768000; includeSubDomains; preload
60
+ body:
61
+ encoding: ASCII-8BIT
62
+ string: '{"id":"adr_67e48f267fee48c3b2175281b3e741ee","object":"Address","created_at":"2020-09-23T14:02:19Z","updated_at":"2020-09-23T14:02:19Z","name":"John
63
+ Doe","company":"Company","street1":"215 N 7th Ave","street2":"Northwest","city":"Manville","state":"NJ","zip":"08835","country":"US","phone":"5555550199","email":null,"mode":"test","carrier_facility":null,"residential":null,"federal_tax_id":null,"state_tax_id":null,"verifications":{}}'
64
+ recorded_at: Wed, 23 Sep 2020 14:02:19 GMT
65
+ recorded_with: VCR 6.0.0
@@ -0,0 +1,65 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.easypost.com/v2/addresses
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"address":{"street1":"131 S 8th Ave","city":"Manville","zip":"08835","phone":"(202)
9
+ 456-1111","name":"NY Warehouse","company":"NY Warehouse","state":"NJ","country":"US"}}'
10
+ headers:
11
+ Accept-Encoding:
12
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
13
+ Accept:
14
+ - "*/*"
15
+ User-Agent:
16
+ - EasyPost/v2 RubyClient/3.1.3 Ruby/2.7.1-p83
17
+ Content-Type:
18
+ - application/json
19
+ Authorization:
20
+ - Basic Q3Z6WXR1ZGE2S1JJOUpqRzdTQUhiQTo=
21
+ response:
22
+ status:
23
+ code: 201
24
+ message: Created
25
+ headers:
26
+ X-Frame-Options:
27
+ - SAMEORIGIN
28
+ X-Xss-Protection:
29
+ - 1; mode=block
30
+ X-Content-Type-Options:
31
+ - nosniff
32
+ X-Ep-Request-Uuid:
33
+ - 19e6c2535f6b556cee70c46e0003dc7e
34
+ Cache-Control:
35
+ - no-cache, no-store, must-revalidate, private
36
+ Pragma:
37
+ - no-cache
38
+ Expires:
39
+ - '0'
40
+ Location:
41
+ - "/api/v2/addresses/adr_7a8f051d63d3460089c55178ca01d207"
42
+ Content-Type:
43
+ - application/json; charset=utf-8
44
+ X-Runtime:
45
+ - '0.053314'
46
+ Transfer-Encoding:
47
+ - chunked
48
+ X-Node:
49
+ - bigweb6sj
50
+ X-Version-Label:
51
+ - easypost-202009222104-7ce76ac125-master
52
+ X-Backend:
53
+ - easypost
54
+ X-Proxied:
55
+ - extlb1nuq a561deb64e
56
+ - intlb1nuq 8df81f0396
57
+ - intlb2sj 8df81f0396
58
+ Strict-Transport-Security:
59
+ - max-age=15768000; includeSubDomains; preload
60
+ body:
61
+ encoding: ASCII-8BIT
62
+ string: '{"id":"adr_7a8f051d63d3460089c55178ca01d207","object":"Address","created_at":"2020-09-23T14:02:20Z","updated_at":"2020-09-23T14:02:20Z","name":"NY
63
+ Warehouse","company":"NY Warehouse","street1":"131 S 8th Ave","street2":null,"city":"Manville","state":"NJ","zip":"08835","country":"US","phone":"2024561111","email":null,"mode":"test","carrier_facility":null,"residential":null,"federal_tax_id":null,"state_tax_id":null,"verifications":{}}'
64
+ recorded_at: Wed, 23 Sep 2020 14:02:20 GMT
65
+ recorded_with: VCR 6.0.0
@@ -0,0 +1,269 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.easypost.com/v2/addresses
6
+ body:
7
+ encoding: UTF-8
8
+ string: address[street1]=A%20Different%20Road&address[street2]=Northwest&address[city]=Manville&address[zip]=08835&address[phone]=555-555-0199&address[company]=Company&address[name]=John%20Doe&address[state]=NJ&address[country]=US
9
+ headers:
10
+ Accept:
11
+ - "*/*"
12
+ User-Agent:
13
+ - EasyPost/v2 RubyClient/3.0.1
14
+ Authorization:
15
+ - Bearer CvzYtuda6KRI9JjG7SAHbA
16
+ Content-Type:
17
+ - application/x-www-form-urlencoded
18
+ Content-Length:
19
+ - '222'
20
+ Accept-Encoding:
21
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
22
+ Host:
23
+ - api.easypost.com
24
+ response:
25
+ status:
26
+ code: 201
27
+ message: Created
28
+ headers:
29
+ X-Frame-Options:
30
+ - SAMEORIGIN
31
+ X-Xss-Protection:
32
+ - 1; mode=block
33
+ X-Content-Type-Options:
34
+ - nosniff
35
+ X-Ep-Request-Uuid:
36
+ - 43c6543d5dca6f3cee61766d000110ba
37
+ Cache-Control:
38
+ - no-cache, no-store, must-revalidate, private
39
+ Pragma:
40
+ - no-cache
41
+ Expires:
42
+ - '0'
43
+ Location:
44
+ - "/api/v2/addresses/adr_5118f161c52c49cdb5667f4b4f5d18c8"
45
+ Content-Type:
46
+ - application/json; charset=utf-8
47
+ X-Runtime:
48
+ - '0.029223'
49
+ Transfer-Encoding:
50
+ - chunked
51
+ X-Node:
52
+ - bigweb9sj
53
+ X-Version-Label:
54
+ - easypost-201911120131-f5c72b1880-master
55
+ X-Backend:
56
+ - easypost
57
+ X-Proxied:
58
+ - extlb2wdc 2744487620
59
+ - intlb2sj ff5a2958df
60
+ - intlb2wdc ff5a2958df
61
+ Strict-Transport-Security:
62
+ - max-age=15768000; includeSubDomains; preload
63
+ body:
64
+ encoding: ASCII-8BIT
65
+ string: '{"id":"adr_5118f161c52c49cdb5667f4b4f5d18c8","object":"Address","created_at":"2019-11-12T08:37:16Z","updated_at":"2019-11-12T08:37:16Z","name":"John
66
+ Doe","company":"Company","street1":"A Different Road","street2":"Northwest","city":"Manville","state":"NJ","zip":"08835","country":"US","phone":"5555550199","email":null,"mode":"test","carrier_facility":null,"residential":null,"federal_tax_id":null,"state_tax_id":null,"verifications":{}}'
67
+ http_version:
68
+ recorded_at: Tue, 12 Nov 2019 08:37:16 GMT
69
+ - request:
70
+ method: post
71
+ uri: https://api.easypost.com/v2/addresses
72
+ body:
73
+ encoding: UTF-8
74
+ string: address[street1]=131%20S%208th%20Ave&address[city]=Manville&address[zip]=08835&address[phone]=(202)%20456-1111&address[name]=NY%20Warehouse&address[company]=NY%20Warehouse&address[state]=NJ&address[country]=US
75
+ headers:
76
+ Accept:
77
+ - "*/*"
78
+ User-Agent:
79
+ - EasyPost/v2 RubyClient/3.0.1
80
+ Authorization:
81
+ - Bearer CvzYtuda6KRI9JjG7SAHbA
82
+ Content-Type:
83
+ - application/x-www-form-urlencoded
84
+ Content-Length:
85
+ - '209'
86
+ Accept-Encoding:
87
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
88
+ Host:
89
+ - api.easypost.com
90
+ response:
91
+ status:
92
+ code: 201
93
+ message: Created
94
+ headers:
95
+ X-Frame-Options:
96
+ - SAMEORIGIN
97
+ X-Xss-Protection:
98
+ - 1; mode=block
99
+ X-Content-Type-Options:
100
+ - nosniff
101
+ X-Ep-Request-Uuid:
102
+ - 43c6543d5dca6f3dee73798a000110c3
103
+ Cache-Control:
104
+ - no-cache, no-store, must-revalidate, private
105
+ Pragma:
106
+ - no-cache
107
+ Expires:
108
+ - '0'
109
+ Location:
110
+ - "/api/v2/addresses/adr_99f3a71054054336861fc0f6112aa514"
111
+ Content-Type:
112
+ - application/json; charset=utf-8
113
+ X-Runtime:
114
+ - '0.028232'
115
+ Transfer-Encoding:
116
+ - chunked
117
+ X-Node:
118
+ - bigweb8sj
119
+ X-Version-Label:
120
+ - easypost-201911120131-f5c72b1880-master
121
+ X-Backend:
122
+ - easypost
123
+ X-Proxied:
124
+ - extlb2wdc 2744487620
125
+ - intlb1wdc ff5a2958df
126
+ - intlb2sj ff5a2958df
127
+ Strict-Transport-Security:
128
+ - max-age=15768000; includeSubDomains; preload
129
+ body:
130
+ encoding: ASCII-8BIT
131
+ string: '{"id":"adr_99f3a71054054336861fc0f6112aa514","object":"Address","created_at":"2019-11-12T08:37:17Z","updated_at":"2019-11-12T08:37:17Z","name":"NY
132
+ Warehouse","company":"NY Warehouse","street1":"131 S 8th Ave","street2":null,"city":"Manville","state":"NJ","zip":"08835","country":"US","phone":"2024561111","email":null,"mode":"test","carrier_facility":null,"residential":null,"federal_tax_id":null,"state_tax_id":null,"verifications":{}}'
133
+ http_version:
134
+ recorded_at: Tue, 12 Nov 2019 08:37:17 GMT
135
+ - request:
136
+ method: post
137
+ uri: https://api.easypost.com/v2/parcels
138
+ body:
139
+ encoding: UTF-8
140
+ string: parcel[weight]=10.0
141
+ headers:
142
+ Accept:
143
+ - "*/*"
144
+ User-Agent:
145
+ - EasyPost/v2 RubyClient/3.0.1
146
+ Authorization:
147
+ - Bearer CvzYtuda6KRI9JjG7SAHbA
148
+ Content-Type:
149
+ - application/x-www-form-urlencoded
150
+ Content-Length:
151
+ - '19'
152
+ Accept-Encoding:
153
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
154
+ Host:
155
+ - api.easypost.com
156
+ response:
157
+ status:
158
+ code: 201
159
+ message: Created
160
+ headers:
161
+ X-Frame-Options:
162
+ - SAMEORIGIN
163
+ X-Xss-Protection:
164
+ - 1; mode=block
165
+ X-Content-Type-Options:
166
+ - nosniff
167
+ X-Ep-Request-Uuid:
168
+ - 43c6543d5dca6f3dee824cd0000110d1
169
+ Cache-Control:
170
+ - no-cache, no-store, must-revalidate, private
171
+ Pragma:
172
+ - no-cache
173
+ Expires:
174
+ - '0'
175
+ Location:
176
+ - "/api/v2/parcels/prcl_d63162bf410e497cbe4a449cef86454d"
177
+ Content-Type:
178
+ - application/json; charset=utf-8
179
+ X-Runtime:
180
+ - '0.031562'
181
+ Transfer-Encoding:
182
+ - chunked
183
+ X-Node:
184
+ - bigweb2sj
185
+ X-Version-Label:
186
+ - easypost-201911120131-f5c72b1880-master
187
+ X-Backend:
188
+ - easypost
189
+ X-Proxied:
190
+ - extlb2wdc 2744487620
191
+ - intlb1sj ff5a2958df
192
+ - intlb1wdc ff5a2958df
193
+ Strict-Transport-Security:
194
+ - max-age=15768000; includeSubDomains; preload
195
+ body:
196
+ encoding: ASCII-8BIT
197
+ string: '{"id":"prcl_d63162bf410e497cbe4a449cef86454d","object":"Parcel","created_at":"2019-11-12T08:37:17Z","updated_at":"2019-11-12T08:37:17Z","length":null,"width":null,"height":null,"predefined_package":null,"weight":10.0,"mode":"test"}'
198
+ http_version:
199
+ recorded_at: Tue, 12 Nov 2019 08:37:18 GMT
200
+ - request:
201
+ method: post
202
+ uri: https://api.easypost.com/v2/shipments
203
+ body:
204
+ encoding: UTF-8
205
+ string: shipment[to_address][id]=adr_5118f161c52c49cdb5667f4b4f5d18c8&shipment[from_address][id]=adr_99f3a71054054336861fc0f6112aa514&shipment[parcel][id]=prcl_d63162bf410e497cbe4a449cef86454d
206
+ headers:
207
+ Accept:
208
+ - "*/*"
209
+ User-Agent:
210
+ - EasyPost/v2 RubyClient/3.0.1
211
+ Authorization:
212
+ - Bearer CvzYtuda6KRI9JjG7SAHbA
213
+ Content-Type:
214
+ - application/x-www-form-urlencoded
215
+ Content-Length:
216
+ - '184'
217
+ Accept-Encoding:
218
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
219
+ Host:
220
+ - api.easypost.com
221
+ response:
222
+ status:
223
+ code: 201
224
+ message: Created
225
+ headers:
226
+ X-Frame-Options:
227
+ - SAMEORIGIN
228
+ X-Xss-Protection:
229
+ - 1; mode=block
230
+ X-Content-Type-Options:
231
+ - nosniff
232
+ X-Ep-Request-Uuid:
233
+ - 43c6543d5dca6f3eee82dd74000110db
234
+ Cache-Control:
235
+ - no-cache, no-store, must-revalidate, private
236
+ Pragma:
237
+ - no-cache
238
+ Expires:
239
+ - '0'
240
+ Location:
241
+ - "/api/v2/shipments/shp_67ceeb526d544a5b9472dc54b1682366"
242
+ Content-Type:
243
+ - application/json; charset=utf-8
244
+ X-Runtime:
245
+ - '0.274373'
246
+ Transfer-Encoding:
247
+ - chunked
248
+ X-Node:
249
+ - bigweb3sj
250
+ X-Version-Label:
251
+ - easypost-201911120131-f5c72b1880-master
252
+ X-Backend:
253
+ - easypost
254
+ X-Proxied:
255
+ - extlb2wdc 2744487620
256
+ - intlb1wdc ff5a2958df
257
+ - intlb2sj ff5a2958df
258
+ Strict-Transport-Security:
259
+ - max-age=15768000; includeSubDomains; preload
260
+ body:
261
+ encoding: ASCII-8BIT
262
+ string: '{"created_at":"2019-11-12T08:37:18Z","is_return":false,"messages":[],"mode":"test","options":{"currency":"USD","payment":{"type":"SENDER"},"label_date":null,"date_advance":0},"reference":null,"status":"unknown","tracking_code":null,"updated_at":"2019-11-12T08:37:18Z","batch_id":null,"batch_status":null,"batch_message":null,"customs_info":null,"from_address":{"id":"adr_99f3a71054054336861fc0f6112aa514","object":"Address","created_at":"2019-11-12T08:37:17Z","updated_at":"2019-11-12T08:37:17Z","name":"NY
263
+ Warehouse","company":"NY Warehouse","street1":"131 S 8th Ave","street2":null,"city":"Manville","state":"NJ","zip":"08835","country":"US","phone":"2024561111","email":null,"mode":"test","carrier_facility":null,"residential":null,"federal_tax_id":null,"state_tax_id":null,"verifications":{}},"insurance":null,"order_id":null,"parcel":{"id":"prcl_d63162bf410e497cbe4a449cef86454d","object":"Parcel","created_at":"2019-11-12T08:37:17Z","updated_at":"2019-11-12T08:37:17Z","length":null,"width":null,"height":null,"predefined_package":null,"weight":10.0,"mode":"test"},"postage_label":null,"rates":[{"id":"rate_1e5cb67fa6c44e949c8e44aa48649985","object":"Rate","created_at":"2019-11-12T08:37:18Z","updated_at":"2019-11-12T08:37:18Z","mode":"test","service":"First","carrier":"USPS","rate":"3.82","currency":"USD","retail_rate":"5.19","retail_currency":"USD","list_rate":"3.82","list_currency":"USD","delivery_days":2,"delivery_date":null,"delivery_date_guaranteed":false,"est_delivery_days":2,"shipment_id":"shp_67ceeb526d544a5b9472dc54b1682366","carrier_account_id":"ca_mtb51Ve0"},{"id":"rate_1ecc048967d74f8a97475df4815ac91a","object":"Rate","created_at":"2019-11-12T08:37:18Z","updated_at":"2019-11-12T08:37:18Z","mode":"test","service":"ParcelSelect","carrier":"USPS","rate":"6.85","currency":"USD","retail_rate":"6.85","retail_currency":"USD","list_rate":"6.85","list_currency":"USD","delivery_days":2,"delivery_date":null,"delivery_date_guaranteed":false,"est_delivery_days":2,"shipment_id":"shp_67ceeb526d544a5b9472dc54b1682366","carrier_account_id":"ca_mtb51Ve0"},{"id":"rate_102663caa0724d2fa02c5ac7cf679a6e","object":"Rate","created_at":"2019-11-12T08:37:18Z","updated_at":"2019-11-12T08:37:18Z","mode":"test","service":"Priority","carrier":"USPS","rate":"6.95","currency":"USD","retail_rate":"7.35","retail_currency":"USD","list_rate":"6.95","list_currency":"USD","delivery_days":1,"delivery_date":null,"delivery_date_guaranteed":false,"est_delivery_days":1,"shipment_id":"shp_67ceeb526d544a5b9472dc54b1682366","carrier_account_id":"ca_mtb51Ve0"},{"id":"rate_da7a099f5e254e709dc5ceb86ba824a9","object":"Rate","created_at":"2019-11-12T08:37:18Z","updated_at":"2019-11-12T08:37:18Z","mode":"test","service":"Express","carrier":"USPS","rate":"22.74","currency":"USD","retail_rate":"25.60","retail_currency":"USD","list_rate":"22.74","list_currency":"USD","delivery_days":null,"delivery_date":null,"delivery_date_guaranteed":false,"est_delivery_days":null,"shipment_id":"shp_67ceeb526d544a5b9472dc54b1682366","carrier_account_id":"ca_mtb51Ve0"}],"refund_status":null,"scan_form":null,"selected_rate":null,"tracker":null,"to_address":{"id":"adr_5118f161c52c49cdb5667f4b4f5d18c8","object":"Address","created_at":"2019-11-12T08:37:16Z","updated_at":"2019-11-12T08:37:16Z","name":"John
264
+ Doe","company":"Company","street1":"A Different Road","street2":"Northwest","city":"Manville","state":"NJ","zip":"08835","country":"US","phone":"5555550199","email":null,"mode":"test","carrier_facility":null,"residential":null,"federal_tax_id":null,"state_tax_id":null,"verifications":{}},"usps_zone":1,"return_address":{"id":"adr_99f3a71054054336861fc0f6112aa514","object":"Address","created_at":"2019-11-12T08:37:17Z","updated_at":"2019-11-12T08:37:17Z","name":"NY
265
+ Warehouse","company":"NY Warehouse","street1":"131 S 8th Ave","street2":null,"city":"Manville","state":"NJ","zip":"08835","country":"US","phone":"2024561111","email":null,"mode":"test","carrier_facility":null,"residential":null,"federal_tax_id":null,"state_tax_id":null,"verifications":{}},"buyer_address":{"id":"adr_5118f161c52c49cdb5667f4b4f5d18c8","object":"Address","created_at":"2019-11-12T08:37:16Z","updated_at":"2019-11-12T08:37:16Z","name":"John
266
+ Doe","company":"Company","street1":"A Different Road","street2":"Northwest","city":"Manville","state":"NJ","zip":"08835","country":"US","phone":"5555550199","email":null,"mode":"test","carrier_facility":null,"residential":null,"federal_tax_id":null,"state_tax_id":null,"verifications":{}},"forms":[],"fees":[],"id":"shp_67ceeb526d544a5b9472dc54b1682366","object":"Shipment"}'
267
+ http_version:
268
+ recorded_at: Tue, 12 Nov 2019 08:37:19 GMT
269
+ recorded_with: VCR 5.0.0