easypost 2.7.3 → 3.1.5

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 (51) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +9 -0
  3. data/CHANGELOG +40 -0
  4. data/README.md +2 -1
  5. data/VERSION +1 -1
  6. data/easypost.gemspec +24 -19
  7. data/lib/easypost.rb +108 -118
  8. data/lib/easypost/address.rb +47 -47
  9. data/lib/easypost/batch.rb +34 -38
  10. data/lib/easypost/carrier_account.rb +4 -6
  11. data/lib/easypost/customs_info.rb +3 -2
  12. data/lib/easypost/customs_item.rb +3 -2
  13. data/lib/easypost/error.rb +25 -33
  14. data/lib/easypost/event.rb +3 -6
  15. data/lib/easypost/insurance.rb +1 -3
  16. data/lib/easypost/item.rb +4 -8
  17. data/lib/easypost/object.rb +111 -113
  18. data/lib/easypost/order.rb +20 -18
  19. data/lib/easypost/parcel.rb +1 -3
  20. data/lib/easypost/pickup.rb +19 -18
  21. data/lib/easypost/pickup_rate.rb +1 -3
  22. data/lib/easypost/postage_label.rb +1 -3
  23. data/lib/easypost/print_job.rb +1 -5
  24. data/lib/easypost/printer.rb +18 -22
  25. data/lib/easypost/rate.rb +1 -3
  26. data/lib/easypost/refund.rb +1 -3
  27. data/lib/easypost/report.rb +22 -24
  28. data/lib/easypost/resource.rb +58 -60
  29. data/lib/easypost/scan_form.rb +4 -6
  30. data/lib/easypost/shipment.rb +84 -92
  31. data/lib/easypost/tracker.rb +10 -12
  32. data/lib/easypost/user.rb +33 -37
  33. data/lib/easypost/util.rb +99 -136
  34. data/lib/easypost/webhook.rb +22 -21
  35. metadata +42 -70
  36. data/circle.yml +0 -3
  37. data/spec/address_spec.rb +0 -81
  38. data/spec/batch_spec.rb +0 -48
  39. data/spec/carrier_account_spec.rb +0 -121
  40. data/spec/insurance_spec.rb +0 -69
  41. data/spec/item_spec.rb +0 -105
  42. data/spec/order_spec.rb +0 -58
  43. data/spec/pickup_spec.rb +0 -83
  44. data/spec/report_spec.rb +0 -59
  45. data/spec/scan_form_spec.rb +0 -46
  46. data/spec/shipment_spec.rb +0 -144
  47. data/spec/spec_helper.rb +0 -10
  48. data/spec/support/constant.rb +0 -106
  49. data/spec/tracker_spec.rb +0 -94
  50. data/spec/user_spec.rb +0 -88
  51. 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
@@ -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
@@ -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,93 +1,96 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easypost
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.3
4
+ version: 3.1.5
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-02-05 00:00:00.000000000 Z
13
+ date: 2020-12-16 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.4'
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.4'
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:
90
- - .gitignore
92
+ - ".gitignore"
93
+ - ".travis.yml"
91
94
  - CHANGELOG
92
95
  - Gemfile
93
96
  - LICENSE
@@ -95,7 +98,6 @@ 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
@@ -126,23 +128,9 @@ files:
126
128
  - lib/easypost/util.rb
127
129
  - lib/easypost/version.rb
128
130
  - 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
131
  homepage: https://www.easypost.com/docs
145
- licenses: []
132
+ licenses:
133
+ - MIT
146
134
  metadata: {}
147
135
  post_install_message:
148
136
  rdoc_options: []
@@ -150,33 +138,17 @@ require_paths:
150
138
  - lib
151
139
  required_ruby_version: !ruby/object:Gem::Requirement
152
140
  requirements:
153
- - - '>='
141
+ - - "~>"
154
142
  - !ruby/object:Gem::Version
155
- version: '0'
143
+ version: '2.2'
156
144
  required_rubygems_version: !ruby/object:Gem::Requirement
157
145
  requirements:
158
- - - '>='
146
+ - - ">="
159
147
  - !ruby/object:Gem::Version
160
148
  version: '0'
161
149
  requirements: []
162
- rubyforge_project:
163
- rubygems_version: 2.0.14.1
150
+ rubygems_version: 3.0.6
164
151
  signing_key:
165
152
  specification_version: 4
166
153
  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
154
+ test_files: []