easypost 3.1.4 → 5.1.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 (148) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +9 -0
  3. data/.github/CODEOWNERS +2 -0
  4. data/.github/ISSUE_TEMPLATE/bug_report.yml +81 -0
  5. data/.github/ISSUE_TEMPLATE/feature_request.yml +37 -0
  6. data/.github/PULL_REQUEST_TEMPLATE.md +22 -0
  7. data/.github/workflows/ci.yml +71 -0
  8. data/.gitignore +27 -17
  9. data/.gitmodules +3 -0
  10. data/CHANGELOG.md +378 -0
  11. data/Gemfile +2 -0
  12. data/Makefile +70 -0
  13. data/README.md +193 -74
  14. data/Rakefile +2 -1
  15. data/UPGRADE_GUIDE.md +181 -0
  16. data/VERSION +1 -1
  17. data/bin/easypost-irb +5 -3
  18. data/easypost.gemspec +27 -20
  19. data/lib/easypost/client.rb +178 -0
  20. data/lib/easypost/connection.rb +64 -0
  21. data/lib/easypost/constants.rb +15 -0
  22. data/lib/easypost/errors/api/api_error.rb +108 -0
  23. data/lib/easypost/errors/api/bad_request_error.rb +6 -0
  24. data/lib/easypost/errors/api/connection_error.rb +6 -0
  25. data/lib/easypost/errors/api/external_api_error.rb +18 -0
  26. data/lib/easypost/errors/api/forbidden_error.rb +6 -0
  27. data/lib/easypost/errors/api/gateway_timeout_error.rb +6 -0
  28. data/lib/easypost/errors/api/internal_server_error.rb +6 -0
  29. data/lib/easypost/errors/api/invalid_request_error.rb +6 -0
  30. data/lib/easypost/errors/api/method_not_allowed_error.rb +6 -0
  31. data/lib/easypost/errors/api/not_found_error.rb +6 -0
  32. data/lib/easypost/errors/api/payment_error.rb +6 -0
  33. data/lib/easypost/errors/api/proxy_error.rb +6 -0
  34. data/lib/easypost/errors/api/rate_limit_error.rb +6 -0
  35. data/lib/easypost/errors/api/redirect_error.rb +6 -0
  36. data/lib/easypost/errors/api/retry_error.rb +6 -0
  37. data/lib/easypost/errors/api/service_unavailable_error.rb +6 -0
  38. data/lib/easypost/errors/api/ssl_error.rb +6 -0
  39. data/lib/easypost/errors/api/timeout_error.rb +6 -0
  40. data/lib/easypost/errors/api/unauthorized_error.rb +6 -0
  41. data/lib/easypost/errors/api/unknown_api_error.rb +6 -0
  42. data/lib/easypost/errors/easy_post_error.rb +7 -0
  43. data/lib/easypost/errors/end_of_pagination_error.rb +7 -0
  44. data/lib/easypost/errors/filtering_error.rb +4 -0
  45. data/lib/easypost/errors/invalid_object_error.rb +4 -0
  46. data/lib/easypost/errors/invalid_parameter_error.rb +11 -0
  47. data/lib/easypost/errors/missing_parameter_error.rb +9 -0
  48. data/lib/easypost/errors/signature_verification_error.rb +4 -0
  49. data/lib/easypost/errors.rb +32 -0
  50. data/lib/easypost/hooks/request_context.rb +16 -0
  51. data/lib/easypost/hooks/response_context.rb +23 -0
  52. data/lib/easypost/hooks.rb +34 -0
  53. data/lib/easypost/http_client.rb +117 -0
  54. data/lib/easypost/internal_utilities.rb +66 -0
  55. data/lib/easypost/models/address.rb +5 -0
  56. data/lib/easypost/models/api_key.rb +5 -0
  57. data/lib/easypost/models/base.rb +58 -0
  58. data/lib/easypost/models/batch.rb +5 -0
  59. data/lib/easypost/models/brand.rb +5 -0
  60. data/lib/easypost/models/carbon_offset.rb +5 -0
  61. data/lib/easypost/models/carrier_account.rb +5 -0
  62. data/lib/easypost/models/customs_info.rb +5 -0
  63. data/lib/easypost/models/customs_item.rb +5 -0
  64. data/lib/easypost/models/end_shipper.rb +5 -0
  65. data/lib/easypost/models/error.rb +21 -0
  66. data/lib/easypost/models/event.rb +5 -0
  67. data/lib/easypost/models/insurance.rb +6 -0
  68. data/lib/easypost/models/order.rb +9 -0
  69. data/lib/easypost/models/parcel.rb +5 -0
  70. data/lib/easypost/models/payload.rb +5 -0
  71. data/lib/easypost/models/payment_method.rb +5 -0
  72. data/lib/easypost/models/pickup.rb +9 -0
  73. data/lib/easypost/models/pickup_rate.rb +5 -0
  74. data/lib/easypost/models/postage_label.rb +5 -0
  75. data/lib/easypost/models/rate.rb +5 -0
  76. data/lib/easypost/models/referral.rb +5 -0
  77. data/lib/easypost/models/refund.rb +5 -0
  78. data/lib/easypost/models/report.rb +5 -0
  79. data/lib/easypost/models/scan_form.rb +6 -0
  80. data/lib/easypost/models/shipment.rb +10 -0
  81. data/lib/easypost/models/tax_identifier.rb +6 -0
  82. data/lib/easypost/models/tracker.rb +5 -0
  83. data/lib/easypost/models/user.rb +5 -0
  84. data/lib/easypost/models/webhook.rb +6 -0
  85. data/lib/easypost/models.rb +35 -0
  86. data/lib/easypost/services/address.rb +50 -0
  87. data/lib/easypost/services/api_key.rb +8 -0
  88. data/lib/easypost/services/base.rb +27 -0
  89. data/lib/easypost/services/batch.rb +53 -0
  90. data/lib/easypost/services/beta_rate.rb +12 -0
  91. data/lib/easypost/services/beta_referral_customer.rb +40 -0
  92. data/lib/easypost/services/billing.rb +75 -0
  93. data/lib/easypost/services/carrier_account.rb +44 -0
  94. data/lib/easypost/services/carrier_metadata.rb +22 -0
  95. data/lib/easypost/services/customs_info.rb +17 -0
  96. data/lib/easypost/services/customs_item.rb +15 -0
  97. data/lib/easypost/services/end_shipper.rb +31 -0
  98. data/lib/easypost/services/event.rb +32 -0
  99. data/lib/easypost/services/insurance.rb +26 -0
  100. data/lib/easypost/services/order.rb +30 -0
  101. data/lib/easypost/services/parcel.rb +16 -0
  102. data/lib/easypost/services/pickup.rb +40 -0
  103. data/lib/easypost/services/rate.rb +8 -0
  104. data/lib/easypost/services/referral_customer.rb +103 -0
  105. data/lib/easypost/services/refund.rb +26 -0
  106. data/lib/easypost/services/report.rb +42 -0
  107. data/lib/easypost/services/scan_form.rb +25 -0
  108. data/lib/easypost/services/shipment.rb +106 -0
  109. data/lib/easypost/services/tracker.rb +38 -0
  110. data/lib/easypost/services/user.rb +66 -0
  111. data/lib/easypost/services/webhook.rb +34 -0
  112. data/lib/easypost/services.rb +32 -0
  113. data/lib/easypost/util.rb +167 -103
  114. data/lib/easypost/utilities/constants.rb +5 -0
  115. data/lib/easypost/utilities/json.rb +23 -0
  116. data/lib/easypost/utilities/static_mapper.rb +73 -0
  117. data/lib/easypost/utilities/system.rb +36 -0
  118. data/lib/easypost/version.rb +3 -1
  119. data/lib/easypost.rb +21 -137
  120. metadata +253 -49
  121. data/.travis.yml +0 -9
  122. data/CHANGELOG +0 -207
  123. data/lib/easypost/address.rb +0 -60
  124. data/lib/easypost/batch.rb +0 -53
  125. data/lib/easypost/carrier_account.rb +0 -8
  126. data/lib/easypost/customs_info.rb +0 -9
  127. data/lib/easypost/customs_item.rb +0 -9
  128. data/lib/easypost/error.rb +0 -33
  129. data/lib/easypost/event.rb +0 -10
  130. data/lib/easypost/insurance.rb +0 -4
  131. data/lib/easypost/item.rb +0 -10
  132. data/lib/easypost/object.rb +0 -149
  133. data/lib/easypost/order.rb +0 -30
  134. data/lib/easypost/parcel.rb +0 -4
  135. data/lib/easypost/pickup.rb +0 -30
  136. data/lib/easypost/pickup_rate.rb +0 -5
  137. data/lib/easypost/postage_label.rb +0 -4
  138. data/lib/easypost/print_job.rb +0 -6
  139. data/lib/easypost/printer.rb +0 -28
  140. data/lib/easypost/rate.rb +0 -4
  141. data/lib/easypost/refund.rb +0 -4
  142. data/lib/easypost/report.rb +0 -31
  143. data/lib/easypost/resource.rb +0 -77
  144. data/lib/easypost/scan_form.rb +0 -8
  145. data/lib/easypost/shipment.rb +0 -120
  146. data/lib/easypost/tracker.rb +0 -15
  147. data/lib/easypost/user.rb +0 -47
  148. data/lib/easypost/webhook.rb +0 -31
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3f2b1945f7283b88880be5fa9700332289d7007137056113d6223a61e59be79a
4
- data.tar.gz: a168444a606c919ca7a5f1a940040b2822d25ee88d555ca7a11fb289a3e06962
3
+ metadata.gz: 74cc993ead7c401dc7dbd719667872b1317a83e31c93bf85e3489cdc5b322a51
4
+ data.tar.gz: 17095956ef150f649b12b9b974db4098b495bbfe7710fe368d594e7e6410e6ea
5
5
  SHA512:
6
- metadata.gz: e53924a901d7dc9f25272991d589d7c08b1f28ccba941792925d9fd6ad8b65a57568caf5a15062e227086a2c9d997d85d72d655b21c1be08addc47093a956bff
7
- data.tar.gz: 6bf95b960ec71c8b79effae947a38fd11a902fba63d98db28b6f7d448a05b4914f7f8a56ffc33452d8660e5898b60a0f953de10f7be0764b9b2b40058034ec4c
6
+ metadata.gz: 8708b3ed757fdcec975e84a585bbbdc5e428de0f32b34b047b3d1860fb663db7b48748a49a5841de405adb00bc3102c3bc7ffea56d7d4ff0bf7ff6a74e81015d
7
+ data.tar.gz: 4fb43956853af9c440f7b84a804250e5e817ea3261e9900f821236bf2ae4fc623d1a68a36a899628b655ca6b1833e9095b3b943d2224224a95af24fb6c732bca
data/.gitattributes ADDED
@@ -0,0 +1,9 @@
1
+ * text=auto
2
+
3
+ # Cassettes
4
+ spec/cassettes/**/* -diff
5
+ spec/cassettes/**/* linguist-generated
6
+
7
+ # Docs
8
+ docs/**/* -diff
9
+ docs/**/* linguist-generated
@@ -0,0 +1,2 @@
1
+ # Ping the DevEx team for reviews on every PR
2
+ * @EasyPost/devex
@@ -0,0 +1,81 @@
1
+ name: Bug Report
2
+ description: File a bug report
3
+ title: "[Bug]: "
4
+ labels: [ "triage" ]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thank you for taking the time to report an issue in this repository. Please fill out the form below.
10
+ - type: input
11
+ id: software-version
12
+ attributes:
13
+ label: Software Version
14
+ # change this description for the specific repo
15
+ description: |
16
+ What version of our software are you running?
17
+ TIP: [Available versions](https://github.com/EasyPost/easypost-ruby/releases)
18
+ validations:
19
+ required: true
20
+ - type: input
21
+ id: language-version
22
+ attributes:
23
+ label: Language Version
24
+ # change this description for the specific language of the repo
25
+ description: |
26
+ What language version and/or framework are you using?
27
+ TIP: [How to find your Ruby version](https://blog.arkency.com/which-ruby-version-am-i-using-how-to-check/)
28
+ validations:
29
+ required: true
30
+ - type: input
31
+ id: os
32
+ attributes:
33
+ label: Operating System
34
+ description: What operating system are you running the software on?
35
+ validations:
36
+ required: true
37
+ - type: textarea
38
+ id: behavior
39
+ attributes:
40
+ label: What happened?
41
+ description: |
42
+ Please describe what happened in reproducible steps.
43
+ Include how often you see this issue, and any relevant links (i.e. GitHub issue, Stack Overflow, etc.).
44
+ value: |
45
+ 1.
46
+ 2.
47
+ 3.
48
+ ...
49
+ validations:
50
+ required: true
51
+ - type: textarea
52
+ id: expected-behavior
53
+ attributes:
54
+ label: What was expected?
55
+ description: Please describe what was expected to happen instead.
56
+ validations:
57
+ required: true
58
+ - type: textarea
59
+ id: sample-code
60
+ attributes:
61
+ label: Sample Code
62
+ description: |
63
+ Please provide any sample code that demonstrates the behavior.
64
+ This will be automatically formatted into the appropriate language, so no need for backticks.
65
+ **Do not include any private information such as API keys or passwords.**
66
+ # change this render to the appropriate language: https://github.com/github/linguist/blob/master/lib/linguist/languages.yml
67
+ render: rb
68
+ validations:
69
+ required: false
70
+ - type: textarea
71
+ id: logs
72
+ attributes:
73
+ label: Relevant logs
74
+ description: |
75
+ Please copy and paste any relevant log output.
76
+ This will be automatically formatted into shell output, so no need for backticks.
77
+ If you have screenshots instead, please paste them below.
78
+ **Do not include any private information such as API keys or passwords.**
79
+ render: sh
80
+ validations:
81
+ required: false
@@ -0,0 +1,37 @@
1
+ name: Feature Request
2
+ description: Request a new feature
3
+ title: "[Feat]: "
4
+ labels: [ "triage" ]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thank you for taking the time to request a new feature.
10
+ Please note, all feature requests are subject to review and approval.
11
+ We welcome all suggestions and ideas, but we cannot guarantee when or if we will implement them.
12
+
13
+ We also welcome pull requests, if you would like to implement the feature yourself.
14
+ Doing so will likely accelerate the process of implementing the requested feature.
15
+ - type: checkboxes
16
+ id: searched
17
+ attributes:
18
+ label: Feature Request Is New
19
+ # change issue link below for the specific repo
20
+ description: |
21
+ Before we begin, please confirm that the requested feature does not already exist or has not [already been requested](https://github.com/EasyPost/easypost-ruby/issues).
22
+ options:
23
+ - label: I have verified that the requested feature does not already exist or has not already been requested.
24
+ required: true
25
+ - type: textarea
26
+ id: description
27
+ attributes:
28
+ label: Description of the feature
29
+ description: |
30
+ Please provide a detailed description of the feature, including:
31
+ - What the feature is
32
+ - What value it adds to the application
33
+ - How it should be implemented (i.e. pseudo-code, or a high-level description of the user experience)
34
+ - Any other relevant information
35
+ validations:
36
+ required: true
37
+
@@ -0,0 +1,22 @@
1
+ # Description
2
+
3
+ <!-- Please provide a general summary of your PR changes and link any related issues or other pull requests. -->
4
+
5
+ # Testing
6
+
7
+ <!--
8
+ Please provide details on how you tested this code. See below.
9
+
10
+ - All pull requests must be tested (unit tests where possible with accompanying cassettes, or provide a screenshot of end-to-end testing when unit tests are not possible)
11
+ - New features must get a new unit test
12
+ - Bug fixes/refactors must re-record existing cassettes
13
+ -->
14
+
15
+ # Pull Request Type
16
+
17
+ Please select the option(s) that are relevant to this PR.
18
+
19
+ - [ ] Bug fix (non-breaking change which fixes an issue)
20
+ - [ ] New feature (non-breaking change which adds functionality)
21
+ - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
22
+ - [ ] Improvement (fixing a typo, updating readme, renaming a variable name, etc)
@@ -0,0 +1,71 @@
1
+ name: 'CI'
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+ pull_request: ~
7
+ workflow_dispatch: ~
8
+
9
+ jobs:
10
+ run-tests:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ rubyversion: ['2.6', '2.7', '3.0', '3.1', '3.2']
15
+ steps:
16
+ - name: Checkout Repository
17
+ uses: actions/checkout@v3
18
+ - name: Set up Ruby
19
+ uses: ruby/setup-ruby@v1
20
+ with:
21
+ ruby-version: ${{ matrix.rubyversion }}
22
+ rubygems: '3.0.0'
23
+ bundler-cache: true
24
+ - name: Install Dependencies
25
+ run: make install
26
+ - name: run tests
27
+ run: EASYPOST_TEST_API_KEY=123 EASYPOST_PROD_API_KEY=123 make test
28
+ - name: Coveralls
29
+ if: github.ref == 'refs/heads/master'
30
+ uses: coverallsapp/github-action@master
31
+ with:
32
+ github-token: ${{ secrets.GITHUB_TOKEN }}
33
+ path-to-lcov: './coverage/lcov/easypost-ruby.lcov'
34
+ lint:
35
+ runs-on: ubuntu-latest
36
+ steps:
37
+ - name: Checkout Repository
38
+ uses: actions/checkout@v3
39
+ - name: Set up Ruby
40
+ uses: ruby/setup-ruby@v1
41
+ with:
42
+ ruby-version: '3.2'
43
+ rubygems: '3.0.0'
44
+ bundler-cache: true
45
+ - name: Install Dependencies
46
+ run: make install
47
+ - name: Install style guides
48
+ run: make install-styleguide
49
+ - name: Lint Project
50
+ run: make lint
51
+ docs:
52
+ if: github.ref == 'refs/heads/master'
53
+ runs-on: ubuntu-latest
54
+ steps:
55
+ - name: Checkout Repository
56
+ uses: actions/checkout@v3
57
+ - name: Set up Ruby
58
+ uses: ruby/setup-ruby@v1
59
+ with:
60
+ ruby-version: '3.2'
61
+ rubygems: '3.0.0'
62
+ bundler-cache: true
63
+ - name: Install Dependencies
64
+ run: make install
65
+ - name: Generate Docs
66
+ run: make docs
67
+ - name: Deploy docs
68
+ uses: peaceiris/actions-gh-pages@v3
69
+ with:
70
+ github_token: ${{ secrets.GITHUB_TOKEN }}
71
+ publish_dir: docs
data/.gitignore CHANGED
@@ -1,9 +1,20 @@
1
- *.gem
2
- *.rbc
1
+ ._*
2
+ .AppleDouble
3
3
  .bundle
4
4
  .config
5
- Gemfile.lock
5
+ .DS_Store
6
+ .env
7
+ .idea/
8
+ .LSOverride
9
+ .Spotlight-V100
10
+ .Trashes
11
+ *.gem
12
+ *.rbc
6
13
  coverage
14
+ dist
15
+ docs
16
+ Gemfile.lock
17
+ Icon
7
18
  InstalledFiles
8
19
  lib/bundler/man
9
20
  pkg
@@ -12,18 +23,17 @@ spec/reports
12
23
  test/tmp
13
24
  test/version_tmp
14
25
  tmp
15
-
16
- # YARD artifacts
17
- .yardoc
18
- _yardoc
19
- doc/
20
-
21
- # iOS
22
- .DS_Store
23
- .AppleDouble
24
- .LSOverride
25
- Icon
26
- ._*
27
- .Spotlight-V100
28
- .Trashes
29
26
  vendor/
27
+ /easycop.yml
28
+ /.rubocop.yml
29
+ [._]*.s[a-v][a-z]
30
+ [._]*.sw[a-p]
31
+ [._]s[a-rt-v][a-z]
32
+ [._]ss[a-gi-z]
33
+ [._]sw[a-p]
34
+ Session.vim
35
+ Sessionx.vim
36
+ .netrwhist
37
+ *~
38
+ tags
39
+ [._]*.un~
data/.gitmodules ADDED
@@ -0,0 +1,3 @@
1
+ [submodule "examples"]
2
+ path = examples
3
+ url = https://github.com/EasyPost/examples
data/CHANGELOG.md ADDED
@@ -0,0 +1,378 @@
1
+ # CHANGELOG
2
+
3
+ ## v5.1.0 (2023-07-28)
4
+
5
+ - Adds hooks to introspect the request and response of API calls (see `HTTP Hooks` section in the README for more details)
6
+ - Maps 400 status code responses to the new `BadRequestError` class
7
+
8
+ ## v5.0.1 (2023-06-20)
9
+
10
+ - Fixes a bug where the params of a `customs_info` on create weren't wrapped properly which led to an empty set of `customs_items`
11
+
12
+ ## v5.0.0 (2023-06-06)
13
+
14
+ See our [Upgrade Guide](UPGRADE_GUIDE.md#upgrading-from-4x-to-50) for more details.
15
+
16
+ - Library is now thread-safe. Closes GitHub Issue ([#183](https://github.com/EasyPost/easypost-ruby/issues/183))
17
+ - Initialize a `Client` object with an API key. Optionally set open and read timeout params
18
+ - Previous classes have been diverted into `Services` and `Models`
19
+ - All methods (i.e. `create`, `retrieve`, `all`) exist in services, accessed via property of the client (eg: `client.shipment.create()`)
20
+ - E.g. `bought_shipment = client.shipment.buy(shipment_id, rate)`
21
+ - Beta namespace changed from `easypost.beta.x` to `client.beta_x`
22
+ - References to `Referral` are now `ReferralCustomer` and `referral_customer` to match the API and docs
23
+ - References to `smartrate` are now `SmartRate` and `smart_rate` to match the API and docs
24
+ - Rename function `get_smartrates` to `get_smart_rates`
25
+ - Rename function `get_lowest_smartrate` to `get_lowest_smart_rate`
26
+ - Empty API response functions for `delete` return `true` instead of empty object
27
+ - Drops support for Ruby 2.5
28
+ - Bumps all dev dependencies
29
+ - Improves Error Deserialization to dynamically handle edge cases that have a bad format
30
+ - Adds `retrieve_estimated_delivery_date` function in Shipment
31
+ - Removes deprecated `endshipper` beta class, please use the GA one `EasyPost::Services::EndShipper`
32
+
33
+ ## v4.13.0 (2023-04-04)
34
+
35
+ - Adds `get_next_page` function to each object which retrieves the next page of a collection when the `has_more` key is present in the response
36
+
37
+ ## v4.12.0 (2023-02-21)
38
+
39
+ - Adds beta `retrieve_stateless_rates` function
40
+ - Adds `get_lowest_stateless_rate` utility
41
+
42
+ ## v4.11.0 (2023-01-18)
43
+
44
+ - Added function to retrieve all pickups, accessible via `EasyPost::Pickup.all`
45
+ - Added payload functions `retrieve_all_payloads` and `retrieve_payload` to retrieve all payloads or a specific payload for an event.
46
+
47
+ ## v4.10.0 (2023-01-11)
48
+
49
+ - Added new beta billing functionality for referral customer users, accessible via `EasyPost::Beta::Referral`
50
+ - `add_payment_method` to add an existing Stripe bank account or credit card to your EasyPost account
51
+ - `refund_by_amount` refunds you wallet balance by a specified amount
52
+ - `refund_by_payment_log` refunds you wallet balance by a specified payment log
53
+ - Fix bug where bank account and credit card payment methods were not deserializing to the `EasyPost::PaymentMethod` class
54
+
55
+ ## v4.9.0 (2022-12-07)
56
+
57
+ - Routes requests for creating a carrier account with a custom workflow (eg: FedEx, UPS) to the correct endpoint when using the `create` function
58
+
59
+ ## v4.8.1 (2022-10-24)
60
+
61
+ - Concatenates `error.message` if it incorrectly comes back from the API as an array
62
+ - Treats any HTTP status outside the `2xx` range as an error. Impact expected is minimal as this change only affects `1xx` and `3xx` HTTP status codes
63
+
64
+ ## v4.8.0 (2022-09-21)
65
+
66
+ - Adds support to buy a shipment by passing in `end_shipper_id`
67
+ - `with_carbon_offset` can now alternatively be passed in the `params` parameter of the `shipment.buy` function
68
+ - Migrates Partner White Label (Referrals) to general library namespace and deprecates beta functions
69
+
70
+ ## v4.7.1 (2022-09-06)
71
+
72
+ - Makes not implemented `all` calls match the `EasyPost::Resource` interface so that one can call `.to_json` on them and receive the proper error
73
+
74
+ ## v4.7.0 (2022-08-25)
75
+
76
+ - Moves EndShipper out of beta to the general library namespace
77
+ - Ensure the Easypost object will respond to `.id` when it has one in `@values`
78
+
79
+ ## v4.6.0 (2022-08-02)
80
+
81
+ - Adds Carbon Offset support
82
+ - Adds ability to create a shipment with carbon_offset
83
+ - Adds ability to buy a shipment with carbon_offset
84
+ - Adds ability to one-call-buy a shipment with carbon_offset
85
+ - Adds ability to rerate a shipment with carbon_offset
86
+ - Adds `validate_webhook` function that returns your webhook or raises an error if there is a `webhook_secret` mismatch
87
+ - Deprecated `PaymentMethod` class, please use `Billing` class for retrieve all payment method function
88
+
89
+ ## v4.5.0 (2022-07-18)
90
+
91
+ - Adds ability to generate shipment forms via `generate_form` function
92
+
93
+ ## v4.4.0 (2022-07-11)
94
+
95
+ - Adds `Billing.retrieve_payment_methods()`, `Billing.fund_wallet()`, and `Billing.delete_payment_method()` functions
96
+ - Captures OS information in the user-agent header for easier debugging
97
+ - Update functions now use `patch` instead of `put` under the hood to better match API behavior and documentation. The behavior of these functions should remain the same
98
+
99
+ ## v4.3.0 (2022-05-19)
100
+
101
+ - Adds the `EndShipper` Beta class with `create`, `retrieve`, `all`, and `save` functions
102
+ - Requests will now fail fast with an error if an API key is not provided instead of making a live API call with no key
103
+ - Fixes a bug where the library could not properly parse the response of deleting a child user
104
+ - Fixes a bug where you could not update a webhook due to a `wrong number of arguments` error
105
+
106
+ ## v4.2.1 (2022-05-11)
107
+
108
+ - Corrects the `Beta` namespace for the new Referral class
109
+
110
+ ## v4.2.0 (2022-05-09)
111
+
112
+ - Adds a `lowest_rate()` function to Orders and Pickups
113
+ - Adds a `Shipment.get_lowest_smartrate()` function and a `shipment.lowest_smartrate()` function
114
+ - Removes the unusable `carrier` param from `Address.create_and_verify` along with the dead `message` conditional check
115
+ - Add beta Referral class for White Label API with these new functions: `create()`, `update_email()`, `all()`, and `add_credit_card()`
116
+
117
+ ## v4.1.2 (2022-03-16)
118
+
119
+ - Rolls back the original connection behavior of establishing a new connection for every request (restores previous expectations for multithreaded implementations)
120
+
121
+ ## v4.1.1 (2022-03-14)
122
+
123
+ - Fixes a bug that prematurely closed connections when using multithreading by wrapping requests in a mutex (closes #148)
124
+
125
+ ## v4.1.0 (2022-03-09)
126
+
127
+ - Adds support for custom client connections (#142)
128
+ - Reduces memory usage by reusing connections
129
+ - Extends all objects with `Enumerable` allowing for iterator patterns (#143)
130
+
131
+ ## v4.0.0 (2022-02-25)
132
+
133
+ - Bumps minimum Ruby version from `2.2` to `2.5`
134
+ - Bumps dev dependencies
135
+ - Documents each interface of the project in code
136
+ - Overhauls the test suite with full coverage
137
+ - Introduces `Rubocop` and lints the entire project
138
+ - Removes the unusable `Print` and `PrintJob` objects
139
+ - Removes deprecated and unusable `stamp_and_barcode_by_reference` method on the Batch object
140
+ - Explicitly returns an error of "not implemented" for `Rate.all` and `Parcel.all`
141
+ - 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
142
+ - Removes the parameters from `Address.verify` as they are unusable
143
+ - Removes the deprecated `http_status` property of the `EasyPost::Error` object as it was replaced with `status`
144
+ - Fixes a bug that would append an extra `id` field to each retrieved object
145
+ - Various other small improvements and bug fixes
146
+
147
+ ## v3.5.0 (2021-12-06)
148
+
149
+ - Adds the `update_brand` method to the user object (closes #122)
150
+
151
+ ## v3.4.0 (2021-07-13)
152
+
153
+ - Removed deprecated `Item` object
154
+ - Sorted EasyPost Resources list
155
+ - Remove 2015-vintage experimental `all_updated` method on Tracker
156
+ - Fixes API key retrieval (#120, thanks @andychongyz)
157
+ - Adds `regenerate_rates` method for new rerate API
158
+ - Adds `deconstruct_keys` method to allow for pattern matching on EasyPost objects
159
+
160
+ ## v3.3.0 (2021-06-10)
161
+
162
+ - Adds `SmartRate` functionality to the `Shipments` object (available by calling `get_smartrates` on a shipment)
163
+ - Fix bug where `EasyPost::CarrierAccount.types` was hitting the wrong endpoint
164
+
165
+ ## v3.2.0 (2021-01-14)
166
+
167
+ - Replace Travis CI with Github Actions
168
+ - Add Ruby 3.0 to supported platforms (#110; thanks @maxwell)
169
+
170
+ ## v3.1.5 (2020-12-16)
171
+
172
+ - Fix attribute lookup when manually constructing objects (#105; thanks @drewtempelmeyer)
173
+ - Flatten class names and clean up some other style issues
174
+ - Fix `EasyPost::Address.create_and_verify`, broken since 3.1.0 (#108; thanks @rajbirverma)
175
+
176
+ ## v3.1.4 (2020-09-29)
177
+
178
+ - Don't modify params passed into Address#create (#78; thanks @TheRusskiy)
179
+ - Don't modify `carriers` and `services` parameters to `Shipment.lowest_rate` (#71 / #103, thanks @vladvinnikov and @jurisgalang)
180
+ - When constructing an easypost object, convert the key to a string (#102; thanks @Geesu)
181
+ - Expose the raw HTTP response as `#http_body` on `EasyPost::Error` objects (#101; thanks @Geesu)
182
+
183
+ ## v3.1.3 (2020-06-26)
184
+
185
+ - Fix bug causing Authorization header to be included in User-Agent header. All users must upgrade.
186
+
187
+ ## v3.1.2 (2020-06-24)
188
+
189
+ - Bad gem push. New version required.
190
+
191
+ ## v3.1.1 (2020-06-23)
192
+
193
+ - Fix bug where EasyPost.http_config was invalid when not explicitly initialized.
194
+
195
+ ## v3.1.0 (2020-06-23)
196
+
197
+ - Add Shipment Invoice and Refund Report
198
+ - Remove dependencies on `RestClient` and `MultiJson`
199
+ - Remove some deprecated endpoints
200
+
201
+ ## v3.0.1 (2018-05-17)
202
+
203
+ - Enforce TLS certificate validity by default
204
+
205
+ ## v3.0.0 (2018-02-15)
206
+
207
+ - Require use of ruby ~> 2.0 and TLSv1.2
208
+
209
+ ## v2.7.3 (2018-02-05)
210
+
211
+ - Fix bug with introduced around certain JSON objects with IDs (thanks vladvinnikov!)
212
+
213
+ ## v2.7.2 (2018-02-01)
214
+
215
+ - Removed unused and unsupported code paths for Container model
216
+ - Removed unused and unsupported code path for Stamp and Barcode methods on the Shipment model
217
+ - Fixed a bug with non-model JSON object with an "id" key being treated as models and raising errors
218
+
219
+ ## v2.7.1 (2017-05-25)
220
+
221
+ - Allow reports to be retrieved without passing a type
222
+
223
+ ## v2.7.0 (2017-04-04)
224
+
225
+ - Changed Report CRUD signatures. requires report type to be passed
226
+
227
+ ## v2.6.2 (2017-02-14)
228
+
229
+ - Added get_rates method for Orders
230
+
231
+ ## v2.6.1 (2017-01-19)
232
+
233
+ - Updated create method for ScanForms
234
+
235
+ ## v2.6.0 (2017-01-17)
236
+
237
+ - Add basic CRUD methods for Webhooks
238
+
239
+ ## v2.5.0 (2016-12-19)
240
+
241
+ - Add prefixes to report in utils
242
+
243
+ ## v2.4.0 (2016-12-08)
244
+
245
+ - Add report resource to ruby client
246
+
247
+ ## v2.3.0 (2016-11-25)
248
+
249
+ - Updated dependencies to allow rest-client 2.0.0 and above
250
+
251
+ ## v2.2.0 (2016-07-260
252
+
253
+ - Added standalone Insurance model
254
+
255
+ ## v2.1.11 (2016-02-04)
256
+
257
+ - Allowed user creation for top-level users
258
+
259
+ ## v2.1.10 (2015-12-23)
260
+
261
+ - Added verify and verify_strict params to Address.create
262
+ - Added Tracker.create_list and Tracker.all_updated for working with large
263
+ numbers of Trackers.
264
+
265
+ ## v2.1.9 (2015-11-04)
266
+
267
+ - Added new tests for Tracker.all
268
+ - Updated some old examples
269
+
270
+ ## v2.1.8 (2015-10-21)
271
+
272
+ - Added Cancel method for Pickups (thanks Ramie Blatt!)
273
+
274
+ ## v2.1.7 (2015-10-05)
275
+
276
+ - Fixed Address.create_and_verify and changed how errors are raised (thanks Dimitri Roche!)
277
+ - Require newer version of the multi_json package
278
+
279
+ ## v2.1.6 (2015-06-10)
280
+
281
+ - Added Address message accessor for backwards compatability
282
+
283
+ ## v2.1.5 (2015-06-10)
284
+
285
+ - Removed Address.message
286
+
287
+ ## v2.1.4 (2015-06-03)
288
+
289
+ - Add Printer and PrintJob resources.
290
+
291
+ ## v2.1.3 (2015-04-30)
292
+
293
+ - Bux fix, EasyPost::Errors no longer break with a nil json body.
294
+
295
+ ## v2.1.2 (2015-04-29)
296
+
297
+ - EasyPost::Errors now correctly parse field errors and error codes.
298
+
299
+ ## v2.1.1 (2015-04-15)
300
+
301
+ - CarrierAccount will now correctly save in-place modifications to credentials
302
+ - Nested variables should now be saved correctly across all models
303
+ - Fixed version numbering confusion (the previous version was 2.0.15, not 2.1.0)
304
+
305
+ ## v2.0.15 (2015-04-15)
306
+
307
+ - Added tracker to shipment buy response
308
+ - Updated tracker tests
309
+
310
+ ## v2.0.14 (2015-04-15)
311
+
312
+ - Added User and CarrierAccount models with CRUD functionality
313
+
314
+ ## v2.0.13 (2014-10-30)
315
+
316
+ - Added Pickup, PickupRate resources.
317
+ - Added ability to pass api_key to a few resources that were missing it.
318
+
319
+ ## v2.0.12 (2014-07-07)
320
+
321
+ - Added Item, Container, and Order resources.
322
+ - Fixed and added a lot of tests.
323
+
324
+ ## v2.0.11 (2013-12-16)
325
+
326
+ - Added Event.receive method for parsing events sent by webhook.
327
+ - Fixed tests to account for the tracking code returning and array of details instead of a Hash
328
+
329
+ ## v2.0.10 (2013-10-03)
330
+
331
+ - API Addition: Event resource added for webhook consumption.
332
+
333
+ ## v2.0.9 (2013-09-19)
334
+
335
+ - Interface Change: Changed batch.scan_form to batch.create_scan_form to support the ability to refer to scan forms associated to batches.
336
+
337
+ ## v2.0.3 (2013-07-31)
338
+
339
+ - API Addition: Tracker resource added. Trackers can be used to register any tracking code with EasyPost webhooks.
340
+
341
+ ## v2.0.2 (2013-07-23)
342
+
343
+ - API Addition: Shipment.track_with_code returns tracking details for any tracking code.
344
+
345
+ ## v2.0.1 (2013-07-07)
346
+
347
+ - API Addition: Address.create_and_verify returns a verified address in one step.
348
+ - API Addition: Shipment.label forces the creation of additional label formats (pdf, epl2, zpl).
349
+ - API Addition: Shipment.insure purchases insurance for a shipment.
350
+ - Library Update: Added the ability to negatively filter carriers and services with Shipment.lowest_rate (e.g. '!usps').
351
+
352
+ ## v2.0.0 (2013-06-25)
353
+
354
+ ## v1.1.3 (2013-06-05)
355
+
356
+ ## v1.1.2 (2013-06-05)
357
+
358
+ ## v1.1.1 (2013-02-12)
359
+
360
+ ## v1.1.0 (2013-01-29)
361
+
362
+ ## v1.0.8 (2012-11-19)
363
+
364
+ ## v1.0.7 (2012-11-19)
365
+
366
+ ## v1.0.6 (2012-11-19)
367
+
368
+ ## v1.0.5 (2012-11-19)
369
+
370
+ ## v1.0.4 (2012-11-14)
371
+
372
+ ## v1.0.3 (2012-11-13)
373
+
374
+ ## v1.0.2 (2012-11-13)
375
+
376
+ ## v1.0.1 (2012-11-13)
377
+
378
+ ## 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