easypost 4.6.0 → 4.7.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 16942dad76e2a3abbfa17dacaaa75f391f65a04a4daaea979bbba2c0e308ac30
4
- data.tar.gz: 90d5b71e9c45c952296ed1dcb3769d1d69902c2917dc4a8fa1ca6842e5918129
3
+ metadata.gz: e9995cfcc5bc7cce1ebefa6343fc31ba18f6f0f4b36dfb7502225b7abb1b40f8
4
+ data.tar.gz: 64d814764933ba53e3de2b01f39ba6fd2195a3a65ec4ec6c01b720078750fc42
5
5
  SHA512:
6
- metadata.gz: 9a91982b9ed19df4cf8ddea05d6da1a43d6caf86e6b49d67cf54d32ba71632e06d89822f695016d30e14a4f3577e600ebba29adedf38ed0c18797413c7589c80
7
- data.tar.gz: 83201c6700dfdff58ca200780efdc83272fe3943a071879529ddb3a9ee8d526e505219c0584a8b91571400e3330be53f4aeefc568efdb5717f35df522a6b62fb
6
+ metadata.gz: 44179f3818dd5d9098eed96f3263b12a67dd7ec415c49fb9efc976b07b858e63ed326c68b0a07415a62da8311cd5b4e72c406bf6650e197ad69956c674b03d76
7
+ data.tar.gz: 86007bac46665593dc205c9c231409698401af9b58da3d2d22049c0510b29528303a625c2be2945814ceffd7ee93838049dba5a8a34dcbf3afe3879f583cee80
@@ -19,6 +19,8 @@ jobs:
19
19
  with:
20
20
  ruby-version: ${{ matrix.rubyversion }}
21
21
  bundler-cache: true
22
+ - name: Install Dependencies
23
+ run: make install
22
24
  - name: run tests
23
25
  run: EASYPOST_TEST_API_KEY=123 EASYPOST_PROD_API_KEY=123 make test
24
26
  lint:
@@ -35,4 +37,4 @@ jobs:
35
37
  - name: Lint Project
36
38
  run: make lint
37
39
  - name: Run security analysis
38
- run: make brakeman
40
+ run: make scan
data/.gitignore CHANGED
@@ -13,6 +13,7 @@ test/tmp
13
13
  test/version_tmp
14
14
  tmp
15
15
  .idea/
16
+ dist
16
17
 
17
18
  # YARD artifacts
18
19
  .yardoc
data/.gitmodules ADDED
@@ -0,0 +1,3 @@
1
+ [submodule "examples"]
2
+ path = examples
3
+ url = https://github.com/EasyPost/examples
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v4.7.0 (2022-08-25)
4
+
5
+ - Moves EndShipper out of beta to the general library namespace
6
+ - Ensure the Easypost object will respond to `.id` when it has one in @values
7
+
3
8
  ## v4.6.0 (2022-08-02)
4
9
 
5
10
  - Adds Carbon Offset support
data/Makefile CHANGED
@@ -2,17 +2,15 @@
2
2
  help:
3
3
  @cat Makefile | grep '^## ' --color=never | cut -c4- | sed -e "`printf 's/ - /\t- /;'`" | column -s "`printf '\t'`" -t
4
4
 
5
- ## brakeman - Runs security analysis on the project with Brakeman
6
- brakeman:
7
- brakeman lib --force
8
-
9
5
  ## build - Builds the project
10
6
  build:
11
- gem build easypost.gemspec
7
+ gem build easypost.gemspec --strict
8
+ mkdir -p dist
9
+ mv *.gem dist/
12
10
 
13
11
  ## clean - Cleans the project
14
12
  clean:
15
- rm -rf coverage doc *.gem
13
+ rm -rf coverage doc *.gem dist
16
14
 
17
15
  ## fix - Fix Rubocop errors
18
16
  fix:
@@ -20,18 +18,34 @@ fix:
20
18
 
21
19
  ## install - Install globally from source
22
20
  install:
21
+ git submodule init
22
+ git submodule update
23
23
  bundle install
24
24
 
25
25
  ## lint - Lint the project
26
26
  lint:
27
27
  rubocop
28
28
 
29
- ## push - Pushes the built gem to Rubygems
30
- push:
31
- gem push *.gem
29
+ ## publish - Publishes the built gem to Rubygems
30
+ publish:
31
+ gem push dist/*.gem
32
+
33
+ ## release - Cuts a release for the project on GitHub (requires GitHub CLI)
34
+ # tag = The associated tag title of the release
35
+ release:
36
+ gh release create ${tag} dist/*
37
+
38
+ ## scan - Runs security analysis on the project with Brakeman
39
+ scan:
40
+ brakeman lib --force
32
41
 
33
42
  ## test - Test the project
34
43
  test:
35
44
  bundle exec rspec
36
45
 
37
- .PHONY: help build clean fix install lint push test
46
+ ## update - Updates dependencies
47
+ update:
48
+ git submodule init
49
+ git submodule update --remote
50
+
51
+ .PHONY: help build clean fix install lint publish release scan test update
data/README.md CHANGED
@@ -121,8 +121,18 @@ make install
121
121
  # Lint project
122
122
  make lint
123
123
 
124
+ # Fix linting errors
125
+ make fix
126
+
124
127
  # Run tests (coverage is generated on a successful test suite run)
125
128
  EASYPOST_TEST_API_KEY=123... EASYPOST_PROD_API_KEY=123... make test
129
+
130
+ # Run security analysis
131
+ make scan
132
+
133
+ # Update submodules
134
+ git submodule init
135
+ git submodule update --remote
126
136
  ```
127
137
 
128
138
  ### Testing
@@ -142,9 +152,8 @@ The following are required on every test run:
142
152
  - `EASYPOST_TEST_API_KEY`
143
153
  - `EASYPOST_PROD_API_KEY`
144
154
 
145
- The following are required when you need to re-record cassettes for applicable tests (fallback values are used otherwise):
155
+ Some tests may require an EasyPost user with a particular set of enabled features such as a `Partner` user when creating referrals. We have attempted to call out these functions in their respective docstrings. The following are required when you need to re-record cassettes for applicable tests:
146
156
 
147
157
  - `USPS_CARRIER_ACCOUNT_ID` (eg: one-call buying a shipment for non-EasyPost employees)
158
+ - `PARTNER_USER_PROD_API_KEY` (eg: creating a referral user)
148
159
  - `REFERRAL_USER_PROD_API_KEY` (eg: adding a credit card to a referral user)
149
-
150
- Some tests may require a user with a particular set of enabled features such as a `Partner` user when creating referrals. We have attempted to call out these functions in their respective docstrings.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 4.6.0
1
+ 4.7.0
@@ -2,26 +2,30 @@
2
2
 
3
3
  # EndShipper objects are fully-qualified Address objects that require all parameters and get verified upon creation.
4
4
  class EasyPost::Beta::EndShipper < EasyPost::Resource
5
- # Create an EndShipper object.
5
+ # <b>DEPRECATED:</b> Please use <tt>EndShipper</tt> in the main namespace instead.
6
6
  def self.create(params = {}, api_key = nil)
7
+ warn '[DEPRECATION] Please use `EndShipper.create` in the main namespace instead.'
7
8
  response = EasyPost.make_request(:post, '/beta/end_shippers', api_key, { address: params })
8
9
  EasyPost::Util.convert_to_easypost_object(response, api_key)
9
10
  end
10
11
 
11
12
  # Retrieves an EndShipper object.
12
13
  def self.retrieve(id, params = {}, api_key = nil)
14
+ warn '[DEPRECATION] Please use `EndShipper.retrieve` in the main namespace instead.'
13
15
  response = EasyPost.make_request(:get, "/beta/end_shippers/#{id}", api_key, params)
14
16
  EasyPost::Util.convert_to_easypost_object(response, api_key)
15
17
  end
16
18
 
17
19
  # Retrieves a list of EndShipper objects.
18
20
  def self.all(params = {}, api_key = nil)
21
+ warn '[DEPRECATION] Please use `EndShipper.all` in the main namespace instead.'
19
22
  response = EasyPost.make_request(:get, '/beta/end_shippers', api_key, params)
20
23
  EasyPost::Util.convert_to_easypost_object(response, api_key)
21
24
  end
22
25
 
23
26
  # Updates (saves) an EndShipper object. This requires all parameters to be set.
24
27
  def save
28
+ warn '[DEPRECATION] Please use `endShipper.save` in the main namespace instead.'
25
29
  if @unsaved_values.length.positive?
26
30
  values = {}
27
31
  @unsaved_values.each { |k| values[k] = @values[k] }
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ # EndShipper objects are fully-qualified Address objects that require all parameters and get verified upon creation.
4
+ class EasyPost::EndShipper < EasyPost::Resource
5
+ # Create an EndShipper object.
6
+ def self.create(params = {}, api_key = nil)
7
+ response = EasyPost.make_request(:post, url, api_key, { address: params })
8
+ EasyPost::Util.convert_to_easypost_object(response, api_key)
9
+ end
10
+
11
+ # Updates (saves) an EndShipper object. This requires all parameters to be set.
12
+ def save
13
+ if @unsaved_values.length.positive?
14
+ values = {}
15
+ @unsaved_values.each { |k| values[k] = @values[k] }
16
+
17
+ wrapped_params = { address: values }
18
+
19
+ response = EasyPost.make_request(:put, url, @api_key, wrapped_params)
20
+ refresh_from(response, api_key)
21
+ end
22
+ self
23
+ end
24
+ end
@@ -49,14 +49,18 @@ class EasyPost::EasyPostObject
49
49
  add_accessors(added)
50
50
  end
51
51
 
52
- # IDs don't change, do not update it
53
- @values.delete(:id)
52
+ # IDs should never change. But to be safe, only delete if they are different.
53
+ @values.delete(:id) if values[:id] != @values[:id]
54
54
 
55
55
  values.each do |k, v|
56
56
  @values[k.to_s] = EasyPost::Util.convert_to_easypost_object(v, api_key, self, k)
57
57
  @transient_values.delete(k)
58
58
  @unsaved_values.delete(k)
59
59
  end
60
+
61
+ return if @values[:id] || (values[:id].nil? && values['id'].nil?)
62
+
63
+ @values[:id] = values[:id] || values['id']
60
64
  end
61
65
 
62
66
  # Get element of an array.
data/lib/easypost/util.rb CHANGED
@@ -11,7 +11,7 @@ module EasyPost::Util
11
11
  'ca' => EasyPost::CarrierAccount,
12
12
  'cstinfo' => EasyPost::CustomsInfo,
13
13
  'cstitem' => EasyPost::CustomsItem,
14
- 'es' => EasyPost::Beta::EndShipper,
14
+ 'es' => EasyPost::EndShipper,
15
15
  'evt' => EasyPost::Event,
16
16
  'hook' => EasyPost::Webhook,
17
17
  'ins' => EasyPost::Insurance,
@@ -41,7 +41,7 @@ module EasyPost::Util
41
41
  'CarrierAccount' => EasyPost::CarrierAccount,
42
42
  'CustomsInfo' => EasyPost::CustomsInfo,
43
43
  'CustomsItem' => EasyPost::CustomsItem,
44
- 'EndShipper' => EasyPost::Beta::EndShipper,
44
+ 'EndShipper' => EasyPost::EndShipper,
45
45
  'Event' => EasyPost::Event,
46
46
  'Insurance' => EasyPost::Insurance,
47
47
  'Order' => EasyPost::Order,
data/lib/easypost.rb CHANGED
@@ -21,6 +21,7 @@ require 'easypost/carrier_account'
21
21
  require 'easypost/carrier_type'
22
22
  require 'easypost/customs_info'
23
23
  require 'easypost/customs_item'
24
+ require 'easypost/end_shipper'
24
25
  require 'easypost/event'
25
26
  require 'easypost/insurance'
26
27
  require 'easypost/order'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easypost
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.6.0
4
+ version: 4.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - EasyPost Developers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-02 00:00:00.000000000 Z
11
+ date: 2022-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: brakeman
@@ -164,6 +164,7 @@ files:
164
164
  - ".github/PULL_REQUEST_TEMPLATE.md"
165
165
  - ".github/workflows/ci.yml"
166
166
  - ".gitignore"
167
+ - ".gitmodules"
167
168
  - ".rubocop.yml"
168
169
  - CHANGELOG.md
169
170
  - CODE_OF_CONDUCT.md
@@ -195,6 +196,7 @@ files:
195
196
  - lib/easypost/connection.rb
196
197
  - lib/easypost/customs_info.rb
197
198
  - lib/easypost/customs_item.rb
199
+ - lib/easypost/end_shipper.rb
198
200
  - lib/easypost/error.rb
199
201
  - lib/easypost/event.rb
200
202
  - lib/easypost/insurance.rb