easypost 4.6.0 → 4.7.0

Sign up to get free protection for your applications and to get access to all the features.
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