easypost 3.5.0 → 4.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +19 -5
  3. data/.gitignore +2 -0
  4. data/.rubocop.yml +5 -0
  5. data/CHANGELOG.md +151 -141
  6. data/Gemfile +2 -0
  7. data/README.md +51 -8
  8. data/Rakefile +2 -1
  9. data/UPGRADE_GUIDE.md +62 -0
  10. data/VERSION +1 -1
  11. data/bin/easypost-irb +5 -3
  12. data/easycop.yml +180 -0
  13. data/easypost.gemspec +21 -19
  14. data/lib/easypost/address.rb +26 -26
  15. data/lib/easypost/api_key.rb +3 -0
  16. data/lib/easypost/batch.rb +31 -30
  17. data/lib/easypost/brand.rb +4 -0
  18. data/lib/easypost/carrier_account.rb +4 -0
  19. data/lib/easypost/carrier_type.rb +3 -0
  20. data/lib/easypost/connection.rb +68 -0
  21. data/lib/easypost/customs_info.rb +5 -1
  22. data/lib/easypost/customs_item.rb +5 -1
  23. data/lib/easypost/error.rb +7 -7
  24. data/lib/easypost/event.rb +5 -1
  25. data/lib/easypost/insurance.rb +4 -0
  26. data/lib/easypost/object.rb +44 -28
  27. data/lib/easypost/order.rb +15 -11
  28. data/lib/easypost/parcel.rb +7 -0
  29. data/lib/easypost/pickup.rb +15 -9
  30. data/lib/easypost/pickup_rate.rb +3 -1
  31. data/lib/easypost/postage_label.rb +3 -0
  32. data/lib/easypost/rate.rb +7 -0
  33. data/lib/easypost/refund.rb +3 -0
  34. data/lib/easypost/report.rb +9 -16
  35. data/lib/easypost/resource.rb +55 -25
  36. data/lib/easypost/scan_form.rb +8 -3
  37. data/lib/easypost/shipment.rb +47 -51
  38. data/lib/easypost/tax_identifier.rb +4 -0
  39. data/lib/easypost/tracker.rb +9 -4
  40. data/lib/easypost/user.rb +14 -5
  41. data/lib/easypost/util.rb +21 -17
  42. data/lib/easypost/version.rb +3 -1
  43. data/lib/easypost/webhook.rb +18 -12
  44. data/lib/easypost.rb +99 -109
  45. metadata +75 -19
  46. data/lib/easypost/print_job.rb +0 -2
  47. data/lib/easypost/printer.rb +0 -24
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 61c0e0c8eb25bf4d96db43cd812a71df8648e2b1a77f2eef5d651bb4c1275cbf
4
- data.tar.gz: ac36be5df27407e988d4fcc50c93a312fe8e1465cba96e85c8120d36acdfcf65
3
+ metadata.gz: 80b21caf35b36c26582451d01113e423da031f0a8dd4ab3e86bc02e40113f2ef
4
+ data.tar.gz: adc284c07d8e9f8650bbbbba486997b6c252d364f489982e9cc2b41af1a822a9
5
5
  SHA512:
6
- metadata.gz: cd011f19406e4f5187f6daac73c490621052605610160992ce4ec42db0b9a4e1b3f64f90123f2b8a7399f32f3b54c7d6515e03c882e01acbc913d611dce9f0a2
7
- data.tar.gz: 3bb63bfce116fa8e1504cde77b38019c68bd4269770246e78aad8916b3e04e29877926550ddaf17fe5fa8489e071069a5e2b0e1432a0fdb52bc0f55e4a981af5
6
+ metadata.gz: 7d771d5798aefff39d456db171bf206db492c90b0bdbb8bbf8471d7112de25ec5ce433c7f8c73f90f6c14bc9b55d0af5016677ba3a70c5d053e5fdeb496da214
7
+ data.tar.gz: 74ed0c9883907b041c05baf185644be0db456c1350fb08db63071b5188b5391260d1be6d1f4851e430d587c79de6fd32ec3653c28f7699b630680bdcb63e1c44
@@ -1,8 +1,8 @@
1
- name: 'CI'
1
+ name: "CI"
2
2
 
3
3
  on:
4
4
  push:
5
- branches: [ master ]
5
+ branches: [master]
6
6
  pull_request: ~
7
7
 
8
8
  jobs:
@@ -10,13 +10,27 @@ jobs:
10
10
  runs-on: ubuntu-latest
11
11
  strategy:
12
12
  matrix:
13
- rubyversion: ['2.4', '2.5', '2.6', '2.7', '3.0']
13
+ rubyversion: ["2.5", "2.6", "2.7", "3.0", "3.1"]
14
14
  steps:
15
- - uses: actions/checkout@v2
16
- - name: set up ruby
15
+ - name: Checkout Repository
16
+ uses: actions/checkout@v2
17
+ - name: Set up Ruby
17
18
  uses: ruby/setup-ruby@v1
18
19
  with:
19
20
  ruby-version: ${{ matrix.rubyversion }}
20
21
  bundler-cache: true
21
22
  - name: run tests
22
23
  run: bundle exec rspec
24
+ lint:
25
+ runs-on: ubuntu-latest
26
+ steps:
27
+ - name: Checkout Repository
28
+ uses: actions/checkout@v2
29
+ - name: Set up Ruby
30
+ uses: ruby/setup-ruby@v1
31
+ with:
32
+ ruby-version: "3.0"
33
+ - name: Install Dependencies
34
+ run: bundle install
35
+ - name: Lint Project
36
+ run: rubocop
data/.gitignore CHANGED
@@ -12,6 +12,7 @@ spec/reports
12
12
  test/tmp
13
13
  test/version_tmp
14
14
  tmp
15
+ .idea/
15
16
 
16
17
  # YARD artifacts
17
18
  .yardoc
@@ -27,3 +28,4 @@ Icon
27
28
  .Spotlight-V100
28
29
  .Trashes
29
30
  vendor/
31
+ .env
data/.rubocop.yml ADDED
@@ -0,0 +1,5 @@
1
+ inherit_from: easycop.yml
2
+
3
+ # We are ignoring RSpec/FilePath because Simplecov doesn't play nice with nested spec files
4
+ RSpec/FilePath:
5
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,250 +1,260 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v4.1.1 (2022-03-14)
3
4
 
4
- ## 3.5.0 2021-12-06
5
+ - Fixes a bug that prematurely closed connections when using multithreading by wrapping requests in a mutex (closes #148)
5
6
 
6
- * Adds the `update_brand` method to the user object (closes #122)
7
+ ## v4.1.0 (2022-03-09)
7
8
 
9
+ - Adds support for custom client connections (#142)
10
+ - Reduces memory usage by reusing connections
11
+ - Extends all objects with `Enumerable` allowing for iterator patterns (#143)
8
12
 
9
- ## 3.4.0 2021-07-13
13
+ ## v4.0.0 (2022-02-25)
10
14
 
11
- * Removed deprecated `Item` object
12
- * Sorted EasyPost Resources list
13
- * Remove 2015-vintage experimental `all_updated` method on Tracker
14
- * Fixes API key retrieval (#120, thanks @andychongyz)
15
- * Adds `regenerate_rates` method for new rerate API
16
- * Adds `deconstruct_keys` method to allow for pattern matching on EasyPost objects
15
+ - Bumps minimum Ruby version from `2.2` to `2.5`
16
+ - Bumps dev dependencies
17
+ - Documents each interface of the project in code
18
+ - Overhauls the test suite with full coverage
19
+ - Introduces `Rubocop` and lints the entire project
20
+ - Removes the unusable `Print` and `PrintJob` objects
21
+ - Removes deprecated and unusable `stamp_and_barcode_by_reference` method on the Batch object
22
+ - Explicitly returns an error of "not implemented" for `Rate.all` and `Parcel.all`
23
+ - Removes the `Shipment.get_rates` function as shipments already contain rates. If you need to get new rates for a shipment, use the `Shipment.regenerate_rates` function instead
24
+ - Removes the parameters from `Address.verify` as they are unusable
25
+ - Removes the deprecated `http_status` property of the `EasyPost::Error` object as it was replaced with `status`
26
+ - Fixes a bug that would append an extra `id` field to each retrieved object
27
+ - Various other small improvements and bug fixes
17
28
 
29
+ ## v3.5.0 (2021-12-06)
18
30
 
19
- ## 3.3.0 2021-06-10
31
+ - Adds the `update_brand` method to the user object (closes #122)
20
32
 
21
- * Adds `SmartRate` functionality to the `Shipments` object (available by calling `get_smartrates` on a shipment)
22
- * Fix bug where `EasyPost::CarrierAccount.types` was hitting the wrong endpoint
33
+ ## v3.4.0 (2021-07-13)
23
34
 
35
+ - Removed deprecated `Item` object
36
+ - Sorted EasyPost Resources list
37
+ - Remove 2015-vintage experimental `all_updated` method on Tracker
38
+ - Fixes API key retrieval (#120, thanks @andychongyz)
39
+ - Adds `regenerate_rates` method for new rerate API
40
+ - Adds `deconstruct_keys` method to allow for pattern matching on EasyPost objects
24
41
 
25
- ## 3.2.0 2021-01-14
42
+ ## v3.3.0 (2021-06-10)
26
43
 
27
- * Replace Travis CI with Github Actions
28
- * Add Ruby 3.0 to supported platforms (#110; thanks @maxwell)
44
+ - Adds `SmartRate` functionality to the `Shipments` object (available by calling `get_smartrates` on a shipment)
45
+ - Fix bug where `EasyPost::CarrierAccount.types` was hitting the wrong endpoint
29
46
 
47
+ ## v3.2.0 (2021-01-14)
30
48
 
31
- ## 3.1.5 2020-12-16
49
+ - Replace Travis CI with Github Actions
50
+ - Add Ruby 3.0 to supported platforms (#110; thanks @maxwell)
32
51
 
33
- * Fix attribute lookup when manually constructing objects (#105; thanks @drewtempelmeyer)
34
- * Flatten class names and clean up some other style issues
35
- * Fix `EasyPost::Address.create_and_verify`, broken since 3.1.0 (#108; thanks @rajbirverma)
52
+ ## v3.1.5 (2020-12-16)
36
53
 
54
+ - Fix attribute lookup when manually constructing objects (#105; thanks @drewtempelmeyer)
55
+ - Flatten class names and clean up some other style issues
56
+ - Fix `EasyPost::Address.create_and_verify`, broken since 3.1.0 (#108; thanks @rajbirverma)
37
57
 
38
- ## 3.1.4 2020-09-29
58
+ ## v3.1.4 (2020-09-29)
39
59
 
40
- * Don't modify params passed into Address#create (#78; thanks @TheRusskiy)
41
- * Don't modify `carriers` and `services` parameters to `Shipment.lowest_rate` (#71 / #103, thanks @vladvinnikov and @jurisgalang)
42
- * When constructing an easypost object, convert the key to a string (#102; thanks @Geesu)
43
- * Expose the raw HTTP response as `#http_body` on `EasyPost::Error` objects (#101; thanks @Geesu)
60
+ - Don't modify params passed into Address#create (#78; thanks @TheRusskiy)
61
+ - Don't modify `carriers` and `services` parameters to `Shipment.lowest_rate` (#71 / #103, thanks @vladvinnikov and @jurisgalang)
62
+ - When constructing an easypost object, convert the key to a string (#102; thanks @Geesu)
63
+ - Expose the raw HTTP response as `#http_body` on `EasyPost::Error` objects (#101; thanks @Geesu)
44
64
 
65
+ ## v3.1.3 (2020-06-26)
45
66
 
46
- ## 3.1.3 2020-06-26
67
+ - Fix bug causing Authorization header to be included in User-Agent header. All users must upgrade.
47
68
 
48
- * Fix bug causing Authorization header to be included in User-Agent header. All users must upgrade.
69
+ ## v3.1.2 (2020-06-24)
49
70
 
71
+ - Bad gem push. New version required.
50
72
 
51
- ## 3.1.2 2020-06-24
73
+ ## v3.1.1 (2020-06-23)
52
74
 
53
- * Bad gem push. New version required.
75
+ - Fix bug where EasyPost.http_config was invalid when not explicitly initialized.
54
76
 
77
+ ## v3.1.0 (2020-06-23)
55
78
 
56
- ## 3.1.1 2020-06-23
79
+ - Add Shipment Invoice and Refund Report
80
+ - Remove dependencies on `RestClient` and `MultiJson`
81
+ - Remove some deprecated endpoints
57
82
 
58
- * Fix bug where EasyPost.http_config was invalid when not explicitly initialized.
83
+ ## v3.0.1 (2018-05-17)
59
84
 
85
+ - Enforce TLS certificate validity by default
60
86
 
61
- ## 3.1.0 2020-06-23
87
+ ## v3.0.0 (2018-02-15)
62
88
 
63
- * Add Shipment Invoice and Refund Report
64
- * Remove dependencies on `RestClient` and `MultiJson`
65
- * Remove some deprecated endpoints
89
+ - Require use of ruby ~> 2.0 and TLSv1.2
66
90
 
91
+ ## v2.7.3 (2018-02-05)
67
92
 
68
- ## 3.0.1 2018-05-17
93
+ - Fix bug with introduced around certain JSON objects with IDs (thanks vladvinnikov!)
69
94
 
70
- * Enforce TLS certificate validity by default
95
+ ## v2.7.2 (2018-02-01)
71
96
 
97
+ - Removed unused and unsupported code paths for Container model
98
+ - Removed unused and unsupported code path for Stamp and Barcode methods on the Shipment model
99
+ - Fixed a bug with non-model JSON object with an "id" key being treated as models and raising errors
72
100
 
73
- ## 3.0.0 2018-02-15
101
+ ## v2.7.1 (2017-05-25)
74
102
 
75
- * Require use of ruby ~> 2.0 and TLSv1.2
103
+ - Allow reports to be retrieved without passing a type
76
104
 
105
+ ## v2.7.0 (2017-04-04)
77
106
 
78
- ## 2.7.3 2018-02-05
107
+ - Changed Report CRUD signatures. requires report type to be passed
79
108
 
80
- * Fix bug with introduced around certain JSON objects with IDs (thanks vladvinnikov!)
109
+ ## v2.6.2 (2017-02-14)
81
110
 
111
+ - Added get_rates method for Orders
82
112
 
83
- ## 2.7.2 2018-02-01
113
+ ## v2.6.1 (2017-01-19)
84
114
 
85
- * Removed unused and unsupported code paths for Container model
86
- * Removed unused and unsupported code path for Stamp and Barcode methods on the Shipment model
87
- * Fixed a bug with non-model JSON object with an "id" key being treated as models and raising errors
115
+ - Updated create method for ScanForms
88
116
 
117
+ ## v2.6.0 (2017-01-17)
89
118
 
90
- ## 2.7.1 2017-05-25
119
+ - Add basic CRUD methods for Webhooks
91
120
 
92
- * Allow reports to be retrieved without passing a type
121
+ ## v2.5.0 (2016-12-19)
93
122
 
123
+ - Add prefixes to report in utils
94
124
 
95
- ## 2.7.0 2017-04-04
125
+ ## v2.4.0 (2016-12-08)
96
126
 
97
- * Changed Report CRUD signatures. requires report type to be passed
127
+ - Add report resource to ruby client
98
128
 
129
+ ## v2.3.0 (2016-11-25)
99
130
 
100
- ## 2.6.2 2017-02-14
131
+ - Updated dependencies to allow rest-client 2.0.0 and above
101
132
 
102
- * Added get_rates method for Orders
133
+ ## v2.2.0 (2016-07-260
103
134
 
135
+ - Added standalone Insurance model
104
136
 
105
- ## 2.6.1 2017-01-19
137
+ ## v2.1.11 (2016-02-04)
106
138
 
107
- * Updated create method for ScanForms
139
+ - Allowed user creation for top-level users
108
140
 
141
+ ## v2.1.10 (2015-12-23)
109
142
 
110
- ## 2.6.0 2017-01-17
143
+ - Added verify and verify_strict params to Address.create
144
+ - Added Tracker.create_list and Tracker.all_updated for working with large
145
+ numbers of Trackers.
111
146
 
112
- * Add basic CRUD methods for Webhooks
147
+ ## v2.1.9 (2015-11-04)
113
148
 
149
+ - Added new tests for Tracker.all
150
+ - Updated some old examples
114
151
 
115
- ## 2.5.0 2016-12-19
152
+ ## v2.1.8 (2015-10-21)
116
153
 
117
- * Add prefixes to report in utils
154
+ - Added Cancel method for Pickups (thanks Ramie Blatt!)
118
155
 
156
+ ## v2.1.7 (2015-10-05)
119
157
 
120
- ## 2.4.0 2016-12-08
158
+ - Fixed Address.create_and_verify and changed how errors are raised (thanks Dimitri Roche!)
159
+ - Require newer version of the multi_json package
121
160
 
122
- * Add report resource to ruby client
161
+ ## v2.1.6 (2015-06-10)
123
162
 
163
+ - Added Address message accessor for backwards compatability
124
164
 
125
- ## 2.3.0 2016-11-25
165
+ ## v2.1.5 (2015-06-10)
126
166
 
127
- * Updated dependencies to allow rest-client 2.0.0 and above
167
+ - Removed Address.message
128
168
 
169
+ ## v2.1.4 (2015-06-03)
129
170
 
130
- ## 2.2.0 2016-07-26
171
+ - Add Printer and PrintJob resources.
131
172
 
132
- * Added standalone Insurance model
173
+ ## v2.1.3 (2015-04-30)
133
174
 
175
+ - Bux fix, EasyPost::Errors no longer break with a nil json body.
134
176
 
135
- ## 2.1.11 2016-02-04
177
+ ## v2.1.2 (2015-04-29)
136
178
 
137
- * Allowed user creation for top-level users
179
+ - EasyPost::Errors now correctly parse field errors and error codes.
138
180
 
181
+ ## v2.1.1 (2015-04-15)
139
182
 
140
- ## 2.1.10 2015-12-23
183
+ - CarrierAccount will now correctly save in-place modifications to credentials
184
+ - Nested variables should now be saved correctly across all models
185
+ - Fixed version numbering confusion (the previous version was 2.0.15, not 2.1.0)
141
186
 
142
- * Added verify and verify_strict params to Address.create
143
- * Added Tracker.create_list and Tracker.all_updated for working with large
144
- numbers of Trackers.
187
+ ## v2.0.15 (2015-04-15)
145
188
 
189
+ - Added tracker to shipment buy response
190
+ - Updated tracker tests
146
191
 
147
- ## 2.1.9 2015-11-04
192
+ ## v2.0.14 (2015-04-15)
148
193
 
149
- * Added new tests for Tracker.all
150
- * Updated some old examples
194
+ - Added User and CarrierAccount models with CRUD functionality
151
195
 
196
+ ## v2.0.13 (2014-10-30)
152
197
 
153
- ## 2.1.8 2015-10-21
198
+ - Added Pickup, PickupRate resources.
199
+ - Added ability to pass api_key to a few resources that were missing it.
154
200
 
155
- * Added Cancel method for Pickups (thanks Ramie Blatt!)
201
+ ## v2.0.12 (2014-07-07)
156
202
 
203
+ - Added Item, Container, and Order resources.
204
+ - Fixed and added a lot of tests.
157
205
 
158
- ## 2.1.7 2015-10-05
206
+ ## v2.0.11 (2013-12-16)
159
207
 
160
- * Fixed Address.create_and_verify and changed how errors are raised (thanks Dimitri Roche!)
161
- * Require newer version of the multi_json package
208
+ - Added Event.receive method for parsing events sent by webhook.
209
+ - Fixed tests to account for the tracking code returning and array of details instead of a Hash
162
210
 
211
+ ## v2.0.10 (2013-10-03)
163
212
 
164
- ## 2.1.6 2015-06-10
213
+ - API Addition: Event resource added for webhook consumption.
165
214
 
166
- * Added Address message accessor for backwards compatability
215
+ ## v2.0.9 (2013-09-19)
167
216
 
217
+ - Interface Change: Changed batch.scan_form to batch.create_scan_form to support the ability to refer to scan forms associated to batches.
168
218
 
169
- ## 2.1.5 2015-06-10
219
+ ## v2.0.3 (2013-07-31)
170
220
 
171
- * Removed Address.message
221
+ - API Addition: Tracker resource added. Trackers can be used to register any tracking code with EasyPost webhooks.
172
222
 
223
+ ## v2.0.2 (2013-07-23)
173
224
 
174
- ## 2.1.4 2015-06-03
225
+ - API Addition: Shipment.track_with_code returns tracking details for any tracking code.
175
226
 
176
- * Add Printer and PrintJob resources.
227
+ ## v2.0.1 (2013-07-07)
177
228
 
229
+ - API Addition: Address.create_and_verify returns a verified address in one step.
230
+ - API Addition: Shipment.label forces the creation of additional label formats (pdf, epl2, zpl).
231
+ - API Addition: Shipment.insure purchases insurance for a shipment.
232
+ - Library Update: Added the ability to negatively filter carriers and services with Shipment.lowest_rate (e.g. '!usps').
178
233
 
179
- ## 2.1.3 2015-04-30
234
+ ## v2.0.0 (2013-06-25)
180
235
 
181
- * Bux fix, EasyPost::Errors no longer break with a nil json body.
236
+ ## v1.1.3 (2013-06-05)
182
237
 
238
+ ## v1.1.2 (2013-06-05)
183
239
 
184
- ## 2.1.2 2015-04-29
240
+ ## v1.1.1 (2013-02-12)
185
241
 
186
- * EasyPost::Errors now correctly parse field errors and error codes.
242
+ ## v1.1.0 (2013-01-29)
187
243
 
244
+ ## v1.0.8 (2012-11-19)
188
245
 
189
- ## 2.1.1 2015-04-15
246
+ ## v1.0.7 (2012-11-19)
190
247
 
191
- * CarrierAccount will now correctly save in-place modifications to credentials
192
- * Nested variables should now be saved correctly across all models
193
- * Fixed version numbering confusion (the previous version was 2.0.15, not 2.1.0)
248
+ ## v1.0.6 (2012-11-19)
194
249
 
250
+ ## v1.0.5 (2012-11-19)
195
251
 
196
- ## 2.0.15 2015-04-15
252
+ ## v1.0.4 (2012-11-14)
197
253
 
198
- * Added tracker to shipment buy response
199
- * Updated tracker tests
254
+ ## v1.0.3 (2012-11-13)
200
255
 
256
+ ## v1.0.2 (2012-11-13)
201
257
 
202
- ## 2.0.14 2015-04-15
258
+ ## v1.0.1 (2012-11-13)
203
259
 
204
- * Added User and CarrierAccount models with CRUD functionality
205
-
206
-
207
- ## 2.0.13 2014-10-30
208
-
209
- * Added Pickup, PickupRate resources.
210
- * Added ability to pass api_key to a few resources that were missing it.
211
-
212
-
213
- ## 2.0.12 2014-07-07
214
-
215
- * Added Item, Container, and Order resources.
216
- * Fixed and added a lot of tests.
217
-
218
-
219
- ## 2.0.11 2013-12-16
220
-
221
- * Added Event.receive method for parsing events sent by webhook.
222
- * Fixed tests to account for the tracking code returning and array of details instead of a Hash
223
-
224
-
225
- ## 2.0.10 2013-10-03
226
-
227
- * API Addition: Event resource added for webhook consumption.
228
-
229
-
230
- ## 2.0.9 2013-09-19
231
-
232
- * Interface Change: Changed batch.scan_form to batch.create_scan_form to support the ability to refer to scan forms associated to batches.
233
-
234
-
235
- ## 2.0.3 2013-07-31
236
-
237
- * API Addition: Tracker resource added. Trackers can be used to register any tracking code with EasyPost webhooks.
238
-
239
-
240
- ## 2.0.2 2013-07-23
241
-
242
- * API Addition: Shipment.track_with_code returns tracking details for any tracking code.
243
-
244
-
245
- ## 2.0.1 2013-07-07
246
-
247
- * API Addition: Address.create_and_verify returns a verified address in one step.
248
- * API Addition: Shipment.label forces the creation of additional label formats (pdf, epl2, zpl).
249
- * API Addition: Shipment.insure purchases insurance for a shipment.
250
- * Library Update: Added the ability to negatively filter carriers and services with Shipment.lowest_rate (e.g. '!usps').
260
+ ## v1.0.0 (2012-11-02)
data/Gemfile CHANGED
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
  gemspec
data/README.md CHANGED
@@ -100,14 +100,57 @@ Up-to-date documentation at: https://easypost.com/docs
100
100
  ## Development
101
101
 
102
102
  ```bash
103
- # Run tests
104
- API_KEY=123... bundle exec rspec
103
+ # Run tests (coverage is generated on a successful test suite run)
104
+ EASYPOST_TEST_API_KEY=123... EASYPOST_PROD_API_KEY=123... bundle exec rspec
105
105
  ```
106
106
 
107
- ## Releasing
107
+ ## Custom connections
108
108
 
109
- 1. Update the version in `VERSION`
110
- 1. Update the `CHANGELOG`
111
- 1. Tag a release on GitHub
112
- 1. Build the Gem `gem build easypost.gemspec`
113
- 1. Publish the Gem `gem push easypost-X.X.X.gem` (replace `X.X.X` with the version being released)
109
+ Set `EasyPost.default_connection` to an object that responds to `call(method, path, api_key = nil, body = nil)`
110
+
111
+ ### Faraday
112
+
113
+ ```ruby
114
+ require 'faraday'
115
+ require 'faraday/response/logger'
116
+ require 'logger'
117
+
118
+ EasyPost.default_connection = lambda do |method, path, api_key = nil, body = nil|
119
+ Faraday
120
+ .new(url: EasyPost.api_base, headers: EasyPost.default_headers) { |builder|
121
+ builder.use Faraday::Response::Logger, Logger.new(STDOUT), {bodies: true, headers: true}
122
+ builder.adapter :net_http
123
+ }
124
+ .public_send(method, path) { |request|
125
+ request.headers['Authorization'] = EasyPost.authorization(api_key)
126
+ request.body = JSON.dump(EasyPost::Util.objects_to_ids(body)) if body
127
+ }.yield_self { |response|
128
+ EasyPost.parse_response(
129
+ status: response.status,
130
+ body: response.body,
131
+ json: response.headers['Content-Type'].start_with?('application/json'),
132
+ )
133
+ }
134
+ end
135
+ ```
136
+
137
+ ### Typhoeus
138
+
139
+ ```ruby
140
+ require 'typhoeus'
141
+
142
+ EasyPost.default_connection = lambda do |method, path, api_key = nil, body = nil|
143
+ Typhoeus.public_send(
144
+ method,
145
+ File.join(EasyPost.api_base, path),
146
+ headers: EasyPost.default_headers.merge('Authorization' => EasyPost.authorization(api_key)),
147
+ body: body.nil? ? nil : JSON.dump(EasyPost::Util.objects_to_ids(body)),
148
+ ).yield_self { |response|
149
+ EasyPost.parse_response(
150
+ status: response.code,
151
+ body: response.body,
152
+ json: response.headers['Content-Type'].start_with?('application/json'),
153
+ )
154
+ }
155
+ end
156
+ ```
data/Rakefile CHANGED
@@ -1,2 +1,3 @@
1
- require "bundler/gem_tasks"
1
+ # frozen_string_literal: true
2
2
 
3
+ require 'bundler/gem_tasks'
data/UPGRADE_GUIDE.md ADDED
@@ -0,0 +1,62 @@
1
+ # Upgrade Guide
2
+
3
+ Use the following guide to assist in the upgrade process of the `easypost-ruby` library between major versions.
4
+
5
+ ## Upgrading from 3.x to 4.0
6
+
7
+ ### 4.0 High Impact Changes
8
+
9
+ * [Updating Dependencies](#40-updating-dependencies)
10
+
11
+ ### 4.0 Medium Impact Changes
12
+
13
+ * [Removal of `get_rates` Shipment Method](#40-removal-of-getrates-shipment-method)
14
+
15
+ ### 4.0 Low Impact Changes
16
+
17
+ * [Removal of `Print` and `PrintJob` Objects](#40-removal-of-print-and-printjob-objects)
18
+ * [Removal of `stamp_and_barcode_by_reference` Batch Method](#40-removal-of-stampandbarcodebyreference-batch-method)
19
+ * [Removal of `Address.verify` Parameters](#40-removal-of-addressverify-parameters)
20
+ * [Removal of the `http_status` Property on EasyPost::Error](#40-removal-of-httpstatus-property-on-easyposterror)
21
+
22
+ ## 4.0 Updating Dependencies
23
+
24
+ Likelihood of Impact: High
25
+
26
+ **Ruby 2.5 Required**
27
+
28
+ easypost-ruby now requires Ruby 2.5 or greater.
29
+
30
+ **Dependencies**
31
+
32
+ No production dependencies were altered. Development dependencies were all bumped and `simplecov` and `rubocop` were introduced.
33
+
34
+ ## 4.0 Removal of get_rates Shipment Method
35
+
36
+ Likelihood of Impact: Medium
37
+
38
+ The HTTP method used for the `get_rates` endpoint at the API level has changed from `POST` to `GET` and will only retrieve rates for a shipment instead of regenerating them. A new `/rerate` endpoint has been introduced to replace this functionality; In this library, you can now call the `Shipment.regenerate_rates` method to regenerate rates. Due to the logic change, the `get_rates` method has been removed since a Shipment inherently already has rates associated.
39
+
40
+ ## 4.0 Removal of Print and PrintJob Objects
41
+
42
+ Likelihood of Impact: Low
43
+
44
+ The `Print` and `PrintJob` objects have been removed as they are no longer usable with the current version of the API.
45
+
46
+ ## 4.0 Removal of stamp_and_barcode_by_reference Batch Method
47
+
48
+ Likelihood of Impact: Low
49
+
50
+ The `stamp_and_barcode_by_reference` Batch method has been removed as it is no longer usable with the current version of the API.
51
+
52
+ ## 4.0 Removal of Address.verify Parameters
53
+
54
+ Likelihood of Impact: Low
55
+
56
+ The parameters for the `Address.verify` method were removed as they were unusable, the current version of the API does not allow you to verify an address by specifying a carrier.
57
+
58
+ ## 4.0 Removal of http_status Property on EasyPost::Error
59
+
60
+ Likelihood of Impact: Low
61
+
62
+ The deprecated `http_status` property has been removed in favor of the `status` property on the EasyPost::Error object.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.5.0
1
+ 4.1.1
data/bin/easypost-irb CHANGED
@@ -1,7 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
2
4
  irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
3
5
 
4
- libs = " -r irb/completion"
5
- libs << " -r #{File.dirname(__FILE__) + '/../lib/easypost'}"
6
- puts "Initializing EasyPost..."
6
+ libs = ' -r irb/completion'
7
+ libs << " -r #{"#{File.dirname(__FILE__)}/../lib/easypost"}"
8
+ puts 'Initializing EasyPost...'
7
9
  exec "#{irb} #{libs} --simple-prompt"