easypost 3.0.1 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +22 -0
  3. data/CHANGELOG +44 -3
  4. data/README.md +2 -1
  5. data/VERSION +1 -1
  6. data/easypost.gemspec +24 -20
  7. data/lib/easypost.rb +109 -118
  8. data/lib/easypost/address.rb +47 -47
  9. data/lib/easypost/batch.rb +34 -38
  10. data/lib/easypost/carrier_account.rb +3 -6
  11. data/lib/easypost/carrier_type.rb +2 -0
  12. data/lib/easypost/customs_info.rb +3 -2
  13. data/lib/easypost/customs_item.rb +3 -2
  14. data/lib/easypost/error.rb +25 -33
  15. data/lib/easypost/event.rb +3 -6
  16. data/lib/easypost/insurance.rb +1 -3
  17. data/lib/easypost/item.rb +4 -8
  18. data/lib/easypost/object.rb +111 -113
  19. data/lib/easypost/order.rb +20 -18
  20. data/lib/easypost/parcel.rb +1 -3
  21. data/lib/easypost/pickup.rb +19 -18
  22. data/lib/easypost/pickup_rate.rb +1 -3
  23. data/lib/easypost/postage_label.rb +1 -3
  24. data/lib/easypost/print_job.rb +1 -5
  25. data/lib/easypost/printer.rb +18 -22
  26. data/lib/easypost/rate.rb +1 -3
  27. data/lib/easypost/refund.rb +1 -3
  28. data/lib/easypost/report.rb +22 -24
  29. data/lib/easypost/resource.rb +58 -60
  30. data/lib/easypost/scan_form.rb +4 -6
  31. data/lib/easypost/shipment.rb +90 -92
  32. data/lib/easypost/tracker.rb +10 -12
  33. data/lib/easypost/user.rb +33 -37
  34. data/lib/easypost/util.rb +99 -136
  35. data/lib/easypost/webhook.rb +22 -21
  36. metadata +35 -62
  37. data/circle.yml +0 -3
  38. data/spec/address_spec.rb +0 -81
  39. data/spec/batch_spec.rb +0 -48
  40. data/spec/carrier_account_spec.rb +0 -121
  41. data/spec/insurance_spec.rb +0 -69
  42. data/spec/item_spec.rb +0 -105
  43. data/spec/order_spec.rb +0 -58
  44. data/spec/pickup_spec.rb +0 -83
  45. data/spec/report_spec.rb +0 -59
  46. data/spec/scan_form_spec.rb +0 -46
  47. data/spec/shipment_spec.rb +0 -144
  48. data/spec/spec_helper.rb +0 -10
  49. data/spec/support/constant.rb +0 -106
  50. data/spec/tracker_spec.rb +0 -94
  51. data/spec/user_spec.rb +0 -88
  52. data/spec/webhook_spec.rb +0 -75
@@ -1,15 +1,13 @@
1
- module EasyPost
2
- class Tracker < Resource
3
- def self.create_list(params={}, api_key=nil)
4
- url = self.url + '/create_list'
5
- response, api_key = EasyPost.request(:post, url, api_key, params)
6
- return true
7
- end
1
+ class EasyPost::Tracker < EasyPost::Resource
2
+ def self.create_list(params={}, api_key=nil)
3
+ url = self.url + '/create_list'
4
+ response = EasyPost.make_request(:post, url, api_key, params)
5
+ return true
6
+ end
8
7
 
9
- def self.all_updated(params={}, api_key=nil)
10
- url = self.url + '/all_updated'
11
- response, api_key = EasyPost.request(:get, url, api_key, params)
12
- return Util.convert_to_easypost_object(response, api_key)
13
- end
8
+ def self.all_updated(params={}, api_key=nil)
9
+ url = self.url + '/all_updated'
10
+ response = EasyPost.make_request(:get, url, api_key, params)
11
+ return EasyPost::Util.convert_to_easypost_object(response, api_key)
14
12
  end
15
13
  end
data/lib/easypost/user.rb CHANGED
@@ -1,49 +1,45 @@
1
- module EasyPost
2
- class User < Resource
3
- def self.create(params={}, api_key=nil)
4
- wrapped_params = {}
5
- wrapped_params[self.class_name().to_sym] = params
6
- response, api_key = EasyPost.request(:post, self.url, api_key, wrapped_params, {}, false)
7
- return Util.convert_to_easypost_object(response, api_key)
8
- end
1
+ class EasyPost::User < EasyPost::Resource
2
+ def self.create(params={}, api_key=nil)
3
+ response = EasyPost.make_request(:post, self.url, api_key, {self.class_name.to_sym => params})
4
+ return EasyPost::Util.convert_to_easypost_object(response, api_key)
5
+ end
9
6
 
10
- def save
11
- if @unsaved_values.length > 0
12
- values = {}
13
- @unsaved_values.each { |k| values[k] = @values[k] }
7
+ def save
8
+ if @unsaved_values.length > 0
9
+ values = {}
10
+ @unsaved_values.each { |k| values[k] = @values[k] }
14
11
 
15
- wrapped_params = {user: values}
12
+ wrapped_params = {user: values}
16
13
 
17
- response, api_key = EasyPost.request(:put, url, @api_key, wrapped_params)
18
- refresh_from(response, api_key)
19
- end
20
- return self
14
+ response = EasyPost.make_request(:put, url, @api_key, wrapped_params)
15
+ refresh_from(response, api_key)
21
16
  end
17
+ return self
18
+ end
22
19
 
23
- def self.retrieve_me
24
- self.all
25
- end
20
+ def self.retrieve_me
21
+ self.all
22
+ end
26
23
 
27
- def self.all_api_keys
28
- response, api_key = EasyPost.request(:get, "/api_keys", @api_key)
29
- return Util.convert_to_easypost_object(response, api_key)
30
- end
24
+ def self.all_api_keys
25
+ response = EasyPost.make_request(:get, "/api_keys", @api_key)
26
+ return EasyPost::Util.convert_to_easypost_object(response, api_key)
27
+ end
28
+
29
+ def api_keys
30
+ api_keys = EasyPost::User.all_api_keys
31
31
 
32
- def api_keys
33
- api_keys = EasyPost::User.all_api_keys
34
-
35
- if api_keys.id == self.id
36
- my_api_keys = api_keys.keys
37
- else
38
- for child in api_keys.children
39
- if child.id == self.id
40
- my_api_keys = child.keys
41
- break
42
- end
32
+ if api_keys.id == self.id
33
+ my_api_keys = api_keys.keys
34
+ else
35
+ for child in api_keys.children
36
+ if child.id == self.id
37
+ my_api_keys = child.keys
38
+ break
43
39
  end
44
40
  end
45
-
46
- my_api_keys
47
41
  end
42
+
43
+ my_api_keys
48
44
  end
49
45
  end
data/lib/easypost/util.rb CHANGED
@@ -1,147 +1,110 @@
1
- module EasyPost
2
- module Util
3
- def self.objects_to_ids(obj)
4
- case obj
5
- when Resource
6
- return {:id => obj.id}
7
- when Hash
8
- result = {}
9
- obj.each { |k, v| result[k] = objects_to_ids(v) unless v.nil? }
10
- return result
11
- when Array
12
- return obj.map { |v| objects_to_ids(v) }
13
- else
14
- return obj
15
- end
1
+ module EasyPost::Util
2
+ def self.objects_to_ids(obj)
3
+ case obj
4
+ when EasyPost::Resource
5
+ return {:id => obj.id}
6
+ when Hash
7
+ result = {}
8
+ obj.each { |k, v| result[k] = objects_to_ids(v) unless v.nil? }
9
+ return result
10
+ when Array
11
+ return obj.map { |v| objects_to_ids(v) }
12
+ else
13
+ return obj
16
14
  end
15
+ end
17
16
 
18
- def self.convert_to_easypost_object(response, api_key, parent=nil, name=nil)
19
- types = {
20
- 'Address' => Address,
21
- 'ScanForm' => ScanForm,
22
- 'CustomsItem' => CustomsItem,
23
- 'CustomsInfo' => CustomsInfo,
24
- 'Parcel' => Parcel,
25
- 'Shipment' => Shipment,
26
- 'Rate' => Rate,
27
- 'Refund' => Refund,
28
- 'Event' => Event,
29
- 'Batch' => Batch,
30
- 'Tracker' => Tracker,
31
- 'Item' => Item,
32
- 'Insurance' => Insurance,
33
- 'Order' => Order,
34
- 'Pickup' => Pickup,
35
- 'PickupRate' => PickupRate,
36
- 'PostageLabel' => PostageLabel,
37
- 'Printer' => Printer,
38
- 'PrintJob' => PrintJob,
39
- 'CarrierAccount' => CarrierAccount,
40
- 'User' => User,
41
- 'Report' => Report,
42
- 'ShipmentReport' => Report,
43
- 'PaymentLogReport' => Report,
44
- 'TrackerReport' => Report,
45
- 'Webhook' => Webhook
46
- }
47
-
48
- prefixes = {
49
- 'adr' => Address,
50
- 'sf' => ScanForm,
51
- 'cstitem' => CustomsItem,
52
- 'cstinfo' => CustomsInfo,
53
- 'prcl' => Parcel,
54
- 'shp' => Shipment,
55
- 'rate' => Rate,
56
- 'rfnd' => Refund,
57
- 'evt' => Event,
58
- 'batch' => Batch,
59
- 'trk' => Tracker,
60
- 'item' => Item,
61
- 'ins' => Insurance,
62
- 'order' => Order,
63
- 'pickup' => Pickup,
64
- 'pickuprate' => PickupRate,
65
- 'pl' => PostageLabel,
66
- 'printer' => Printer,
67
- 'printjob' => PrintJob,
68
- 'ca' => CarrierAccount,
69
- 'user' => User,
70
- 'shprep' => Report,
71
- 'plrep' => Report,
72
- 'trkrep' => Report,
73
- 'hook' => Webhook
74
- }
75
-
76
- case response
77
- when Array
78
- return response.map { |i| convert_to_easypost_object(i, api_key, parent) }
79
- when Hash
80
- if cls_name = response[:object]
81
- cls = types[cls_name]
82
- elsif response[:id]
83
- if response[:id].index('_').nil?
84
- cls = EasyPostObject
85
- elsif cls_prefix = response[:id][0..response[:id].index('_')]
86
- cls = prefixes[cls_prefix[0..-2]]
87
- end
88
- elsif response['id']
89
- if response['id'].index('_').nil?
90
- cls = EasyPostObject
91
- elsif cls_prefix = response['id'][0..response['id'].index('_')]
92
- cls = prefixes[cls_prefix[0..-2]]
93
- end
94
- end
95
-
96
- cls ||= EasyPostObject
97
- return cls.construct_from(response, api_key, parent, name)
98
- else
99
- return response
100
- end
101
- end
17
+ def self.normalize_string_list(lst)
18
+ lst = lst.is_a?(String) ? lst.split(',') : Array(lst)
19
+ lst.map(&:to_s).map(&:downcase).map(&:strip)
20
+ end
102
21
 
103
- def self.symbolize_names(obj)
104
- case obj
105
- when Hash
106
- result = {}
107
- obj.each do |k, v|
108
- k = (k.to_sym rescue k) || k
109
- obj[k] = symbolize_names(v)
110
- end
111
- return result
112
- when Array
113
- return obj.map { |v| symbolize_names(v) }
114
- else
115
- return obj
116
- end
117
- end
22
+ def self.convert_to_easypost_object(response, api_key, parent=nil, name=nil)
23
+ types = {
24
+ 'Address' => EasyPost::Address,
25
+ 'ScanForm' => EasyPost::ScanForm,
26
+ 'CustomsItem' => EasyPost::CustomsItem,
27
+ 'CustomsInfo' => EasyPost::CustomsInfo,
28
+ 'Parcel' => EasyPost::Parcel,
29
+ 'Shipment' => EasyPost::Shipment,
30
+ 'Rate' => EasyPost::Rate,
31
+ 'Refund' => EasyPost::Refund,
32
+ 'Event' => EasyPost::Event,
33
+ 'Batch' => EasyPost::Batch,
34
+ 'Tracker' => EasyPost::Tracker,
35
+ 'Item' => EasyPost::Item,
36
+ 'Insurance' => EasyPost::Insurance,
37
+ 'Order' => EasyPost::Order,
38
+ 'Pickup' => EasyPost::Pickup,
39
+ 'PickupRate' => EasyPost::PickupRate,
40
+ 'PostageLabel' => EasyPost::PostageLabel,
41
+ 'Printer' => EasyPost::Printer,
42
+ 'PrintJob' => EasyPost::PrintJob,
43
+ 'CarrierAccount' => EasyPost::CarrierAccount,
44
+ 'User' => EasyPost::User,
45
+ 'Report' => EasyPost::Report,
46
+ 'ShipmentReport' => EasyPost::Report,
47
+ 'PaymentLogReport' => EasyPost::Report,
48
+ 'TrackerReport' => EasyPost::Report,
49
+ 'RefundReport' => EasyPost::Report,
50
+ 'ShipmentInvoiceReport' => EasyPost::Report,
51
+ 'Webhook' => EasyPost::Webhook
52
+ }
118
53
 
119
- def self.url_encode(key)
120
- URI.escape(key.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
121
- end
54
+ prefixes = {
55
+ 'adr' => EasyPost::Address,
56
+ 'sf' => EasyPost::ScanForm,
57
+ 'cstitem' => EasyPost::CustomsItem,
58
+ 'cstinfo' => EasyPost::CustomsInfo,
59
+ 'prcl' => EasyPost::Parcel,
60
+ 'shp' => EasyPost::Shipment,
61
+ 'rate' => EasyPost::Rate,
62
+ 'rfnd' => EasyPost::Refund,
63
+ 'evt' => EasyPost::Event,
64
+ 'batch' => EasyPost::Batch,
65
+ 'trk' => EasyPost::Tracker,
66
+ 'item' => EasyPost::Item,
67
+ 'ins' => EasyPost::Insurance,
68
+ 'order' => EasyPost::Order,
69
+ 'pickup' => EasyPost::Pickup,
70
+ 'pickuprate' => EasyPost::PickupRate,
71
+ 'pl' => EasyPost::PostageLabel,
72
+ 'printer' => EasyPost::Printer,
73
+ 'printjob' => EasyPost::PrintJob,
74
+ 'ca' => EasyPost::CarrierAccount,
75
+ 'user' => EasyPost::User,
76
+ 'shprep' => EasyPost::Report,
77
+ 'plrep' => EasyPost::Report,
78
+ 'trkrep' => EasyPost::Report,
79
+ 'refrep' => EasyPost::Report,
80
+ 'shpinvrep' => EasyPost::Report,
81
+ 'hook' => EasyPost::Webhook
82
+ }
122
83
 
123
- def self.flatten_params(params, parent_key=nil)
124
- result = []
125
- if params.is_a?(Hash)
126
- params.each do |k, v|
127
- calculated_key = parent_key ? "#{parent_key}[#{url_encode(k)}]" : url_encode(k)
128
- if v.is_a?(Hash) or v.is_a?(Array)
129
- result += flatten_params(v, calculated_key)
130
- else
131
- result << [calculated_key, v]
132
- end
84
+ case response
85
+ when Array
86
+ return response.map { |i| convert_to_easypost_object(i, api_key, parent) }
87
+ when Hash
88
+ if cls_name = response[:object]
89
+ cls = types[cls_name]
90
+ elsif response[:id]
91
+ if response[:id].index('_').nil?
92
+ cls = EasyPost::EasyPostObject
93
+ elsif cls_prefix = response[:id][0..response[:id].index('_')]
94
+ cls = prefixes[cls_prefix[0..-2]]
133
95
  end
134
- elsif params.is_a?(Array)
135
- params.each_with_index do |v, i|
136
- calculated_key = parent_key ? "#{parent_key}[#{i}]" : i
137
- if v.is_a?(Hash) or v.is_a?(Array)
138
- result += flatten_params(v, calculated_key)
139
- else
140
- result << [calculated_key, v]
141
- end
96
+ elsif response['id']
97
+ if response['id'].index('_').nil?
98
+ cls = EasyPost::EasyPostObject
99
+ elsif cls_prefix = response['id'][0..response['id'].index('_')]
100
+ cls = prefixes[cls_prefix[0..-2]]
142
101
  end
143
102
  end
144
- return result
103
+
104
+ cls ||= EasyPost::EasyPostObject
105
+ return cls.construct_from(response, api_key, parent, name)
106
+ else
107
+ return response
145
108
  end
146
109
  end
147
110
  end
@@ -1,28 +1,29 @@
1
- module EasyPost
2
- class Webhook < Resource
3
- def update(params={})
4
- unless self.id
5
- raise Error.new("Could not determine which URL to request: #{self.class} instance has invalid ID: #{self.id.inspect}")
6
- end
7
- instance_url = "#{self.class.url}/#{CGI.escape(id)}"
8
-
9
- response, api_key = EasyPost.request(:put, instance_url, @api_key, params)
10
- self.refresh_from(response, api_key, true)
11
-
12
- return self
1
+ class EasyPost::Webhook < EasyPost::Resource
2
+ def update(params={})
3
+ # NOTE: This method is redefined here since the "url" method conflicts
4
+ # with the objects field
5
+ unless self.id
6
+ raise EasyPost::Error.new("Could not determine which URL to request: #{self.class} instance has invalid ID: #{self.id.inspect}")
13
7
  end
8
+ instance_url = "#{self.class.url}/#{CGI.escape(id)}"
14
9
 
15
- def delete
16
- # Note: This method is redefined here since the "url" method conflicts with the objects field
17
- unless self.id
18
- raise Error.new("Could not determine which URL to request: #{self.class} instance has invalid ID: #{self.id.inspect}")
19
- end
20
- instance_url = "#{self.class.url}/#{CGI.escape(id)}"
10
+ response = EasyPost.make_request(:put, instance_url, @api_key, params)
11
+ self.refresh_from(response, api_key, true)
21
12
 
22
- response, api_key = EasyPost.request(:delete, instance_url, @api_key)
23
- refresh_from(response, api_key)
13
+ return self
14
+ end
24
15
 
25
- return self
16
+ def delete
17
+ # NOTE: This method is redefined here since the "url" method conflicts
18
+ # with the objects field
19
+ unless self.id
20
+ raise EasyPost::Error.new("Could not determine which URL to request: #{self.class} instance has invalid ID: #{self.id.inspect}")
26
21
  end
22
+ instance_url = "#{self.class.url}/#{CGI.escape(id)}"
23
+
24
+ response = EasyPost.make_request(:delete, instance_url, @api_key)
25
+ refresh_from(response, api_key)
26
+
27
+ return self
27
28
  end
28
29
  end
metadata CHANGED
@@ -1,92 +1,95 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easypost
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.3.0
5
5
  platform: ruby
6
6
  authors:
7
- - Sawyer Bateman
7
+ - Jake Epstein
8
+ - Andrew Tribone
9
+ - James Brown
8
10
  autorequire:
9
11
  bindir: bin
10
12
  cert_chain: []
11
- date: 2018-05-17 00:00:00.000000000 Z
13
+ date: 2021-06-10 00:00:00.000000000 Z
12
14
  dependencies:
13
15
  - !ruby/object:Gem::Dependency
14
- name: rest-client
16
+ name: pry
15
17
  requirement: !ruby/object:Gem::Requirement
16
18
  requirements:
17
- - - ">="
19
+ - - "~>"
18
20
  - !ruby/object:Gem::Version
19
- version: '1.7'
20
- type: :runtime
21
+ version: '0.13'
22
+ type: :development
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
23
25
  requirements:
24
- - - ">="
26
+ - - "~>"
25
27
  - !ruby/object:Gem::Version
26
- version: '1.7'
28
+ version: '0.13'
27
29
  - !ruby/object:Gem::Dependency
28
- name: multi_json
30
+ name: rake
29
31
  requirement: !ruby/object:Gem::Requirement
30
32
  requirements:
31
- - - ">="
33
+ - - "~>"
32
34
  - !ruby/object:Gem::Version
33
- version: 1.3.0
34
- type: :runtime
35
+ version: '13.0'
36
+ type: :development
35
37
  prerelease: false
36
38
  version_requirements: !ruby/object:Gem::Requirement
37
39
  requirements:
38
- - - ">="
40
+ - - "~>"
39
41
  - !ruby/object:Gem::Version
40
- version: 1.3.0
42
+ version: '13.0'
41
43
  - !ruby/object:Gem::Dependency
42
- name: bundler
44
+ name: rspec
43
45
  requirement: !ruby/object:Gem::Requirement
44
46
  requirements:
45
47
  - - "~>"
46
48
  - !ruby/object:Gem::Version
47
- version: '1.7'
49
+ version: '3.9'
48
50
  type: :development
49
51
  prerelease: false
50
52
  version_requirements: !ruby/object:Gem::Requirement
51
53
  requirements:
52
54
  - - "~>"
53
55
  - !ruby/object:Gem::Version
54
- version: '1.7'
56
+ version: '3.9'
55
57
  - !ruby/object:Gem::Dependency
56
- name: rake
58
+ name: webmock
57
59
  requirement: !ruby/object:Gem::Requirement
58
60
  requirements:
59
61
  - - "~>"
60
62
  - !ruby/object:Gem::Version
61
- version: '10.0'
63
+ version: '3.8'
62
64
  type: :development
63
65
  prerelease: false
64
66
  version_requirements: !ruby/object:Gem::Requirement
65
67
  requirements:
66
68
  - - "~>"
67
69
  - !ruby/object:Gem::Version
68
- version: '10.0'
70
+ version: '3.8'
69
71
  - !ruby/object:Gem::Dependency
70
- name: rspec
72
+ name: vcr
71
73
  requirement: !ruby/object:Gem::Requirement
72
74
  requirements:
73
75
  - - "~>"
74
76
  - !ruby/object:Gem::Version
75
- version: '2.13'
77
+ version: '5.1'
76
78
  type: :development
77
79
  prerelease: false
78
80
  version_requirements: !ruby/object:Gem::Requirement
79
81
  requirements:
80
82
  - - "~>"
81
83
  - !ruby/object:Gem::Version
82
- version: '2.13'
84
+ version: '5.1'
83
85
  description: Client library for accessing the EasyPost shipping API via Ruby.
84
- email: contact@easypost.com
86
+ email: support@easypost.com
85
87
  executables:
86
88
  - easypost-irb
87
89
  extensions: []
88
90
  extra_rdoc_files: []
89
91
  files:
92
+ - ".github/workflows/ci.yml"
90
93
  - ".gitignore"
91
94
  - CHANGELOG
92
95
  - Gemfile
@@ -95,12 +98,12 @@ files:
95
98
  - Rakefile
96
99
  - VERSION
97
100
  - bin/easypost-irb
98
- - circle.yml
99
101
  - easypost.gemspec
100
102
  - lib/easypost.rb
101
103
  - lib/easypost/address.rb
102
104
  - lib/easypost/batch.rb
103
105
  - lib/easypost/carrier_account.rb
106
+ - lib/easypost/carrier_type.rb
104
107
  - lib/easypost/customs_info.rb
105
108
  - lib/easypost/customs_item.rb
106
109
  - lib/easypost/error.rb
@@ -126,23 +129,9 @@ files:
126
129
  - lib/easypost/util.rb
127
130
  - lib/easypost/version.rb
128
131
  - lib/easypost/webhook.rb
129
- - spec/address_spec.rb
130
- - spec/batch_spec.rb
131
- - spec/carrier_account_spec.rb
132
- - spec/insurance_spec.rb
133
- - spec/item_spec.rb
134
- - spec/order_spec.rb
135
- - spec/pickup_spec.rb
136
- - spec/report_spec.rb
137
- - spec/scan_form_spec.rb
138
- - spec/shipment_spec.rb
139
- - spec/spec_helper.rb
140
- - spec/support/constant.rb
141
- - spec/tracker_spec.rb
142
- - spec/user_spec.rb
143
- - spec/webhook_spec.rb
144
132
  homepage: https://www.easypost.com/docs
145
- licenses: []
133
+ licenses:
134
+ - MIT
146
135
  metadata: {}
147
136
  post_install_message:
148
137
  rdoc_options: []
@@ -150,33 +139,17 @@ require_paths:
150
139
  - lib
151
140
  required_ruby_version: !ruby/object:Gem::Requirement
152
141
  requirements:
153
- - - "~>"
142
+ - - ">="
154
143
  - !ruby/object:Gem::Version
155
- version: '2.0'
144
+ version: '2.2'
156
145
  required_rubygems_version: !ruby/object:Gem::Requirement
157
146
  requirements:
158
147
  - - ">="
159
148
  - !ruby/object:Gem::Version
160
149
  version: '0'
161
150
  requirements: []
162
- rubyforge_project:
163
- rubygems_version: 2.7.6
151
+ rubygems_version: 3.0.3
164
152
  signing_key:
165
153
  specification_version: 4
166
154
  summary: EasyPost Ruby Client Library
167
- test_files:
168
- - spec/address_spec.rb
169
- - spec/batch_spec.rb
170
- - spec/carrier_account_spec.rb
171
- - spec/insurance_spec.rb
172
- - spec/item_spec.rb
173
- - spec/order_spec.rb
174
- - spec/pickup_spec.rb
175
- - spec/report_spec.rb
176
- - spec/scan_form_spec.rb
177
- - spec/shipment_spec.rb
178
- - spec/spec_helper.rb
179
- - spec/support/constant.rb
180
- - spec/tracker_spec.rb
181
- - spec/user_spec.rb
182
- - spec/webhook_spec.rb
155
+ test_files: []