easypost 4.8.1 → 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 (146) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +5 -0
  3. data/.github/workflows/ci.yml +34 -5
  4. data/.gitignore +27 -20
  5. data/CHANGELOG.md +56 -0
  6. data/Makefile +30 -11
  7. data/README.md +111 -45
  8. data/UPGRADE_GUIDE.md +119 -0
  9. data/VERSION +1 -1
  10. data/easypost.gemspec +14 -10
  11. data/lib/easypost/client.rb +178 -0
  12. data/lib/easypost/connection.rb +2 -4
  13. data/lib/easypost/constants.rb +15 -0
  14. data/lib/easypost/errors/api/api_error.rb +108 -0
  15. data/lib/easypost/errors/api/bad_request_error.rb +6 -0
  16. data/lib/easypost/errors/api/connection_error.rb +6 -0
  17. data/lib/easypost/errors/api/external_api_error.rb +18 -0
  18. data/lib/easypost/errors/api/forbidden_error.rb +6 -0
  19. data/lib/easypost/errors/api/gateway_timeout_error.rb +6 -0
  20. data/lib/easypost/errors/api/internal_server_error.rb +6 -0
  21. data/lib/easypost/errors/api/invalid_request_error.rb +6 -0
  22. data/lib/easypost/errors/api/method_not_allowed_error.rb +6 -0
  23. data/lib/easypost/errors/api/not_found_error.rb +6 -0
  24. data/lib/easypost/errors/api/payment_error.rb +6 -0
  25. data/lib/easypost/errors/api/proxy_error.rb +6 -0
  26. data/lib/easypost/errors/api/rate_limit_error.rb +6 -0
  27. data/lib/easypost/errors/api/redirect_error.rb +6 -0
  28. data/lib/easypost/errors/api/retry_error.rb +6 -0
  29. data/lib/easypost/errors/api/service_unavailable_error.rb +6 -0
  30. data/lib/easypost/errors/api/ssl_error.rb +6 -0
  31. data/lib/easypost/errors/api/timeout_error.rb +6 -0
  32. data/lib/easypost/errors/api/unauthorized_error.rb +6 -0
  33. data/lib/easypost/errors/api/unknown_api_error.rb +6 -0
  34. data/lib/easypost/errors/easy_post_error.rb +7 -0
  35. data/lib/easypost/errors/end_of_pagination_error.rb +7 -0
  36. data/lib/easypost/errors/filtering_error.rb +4 -0
  37. data/lib/easypost/errors/invalid_object_error.rb +4 -0
  38. data/lib/easypost/errors/invalid_parameter_error.rb +11 -0
  39. data/lib/easypost/errors/missing_parameter_error.rb +9 -0
  40. data/lib/easypost/errors/signature_verification_error.rb +4 -0
  41. data/lib/easypost/errors.rb +32 -0
  42. data/lib/easypost/hooks/request_context.rb +16 -0
  43. data/lib/easypost/hooks/response_context.rb +23 -0
  44. data/lib/easypost/hooks.rb +34 -0
  45. data/lib/easypost/http_client.rb +117 -0
  46. data/lib/easypost/internal_utilities.rb +66 -0
  47. data/lib/easypost/models/address.rb +5 -0
  48. data/lib/easypost/models/api_key.rb +5 -0
  49. data/lib/easypost/models/base.rb +58 -0
  50. data/lib/easypost/models/batch.rb +5 -0
  51. data/lib/easypost/models/brand.rb +5 -0
  52. data/lib/easypost/{carbon_offset.rb → models/carbon_offset.rb} +1 -1
  53. data/lib/easypost/models/carrier_account.rb +5 -0
  54. data/lib/easypost/models/customs_info.rb +5 -0
  55. data/lib/easypost/models/customs_item.rb +5 -0
  56. data/lib/easypost/models/end_shipper.rb +5 -0
  57. data/lib/easypost/models/error.rb +21 -0
  58. data/lib/easypost/models/event.rb +5 -0
  59. data/lib/easypost/{insurance.rb → models/insurance.rb} +1 -1
  60. data/lib/easypost/models/order.rb +9 -0
  61. data/lib/easypost/models/parcel.rb +5 -0
  62. data/lib/easypost/models/payload.rb +5 -0
  63. data/lib/easypost/models/payment_method.rb +5 -0
  64. data/lib/easypost/models/pickup.rb +9 -0
  65. data/lib/easypost/{pickup_rate.rb → models/pickup_rate.rb} +1 -1
  66. data/lib/easypost/{postage_label.rb → models/postage_label.rb} +1 -1
  67. data/lib/easypost/models/rate.rb +5 -0
  68. data/lib/easypost/models/referral.rb +5 -0
  69. data/lib/easypost/{refund.rb → models/refund.rb} +1 -1
  70. data/lib/easypost/models/report.rb +5 -0
  71. data/lib/easypost/models/scan_form.rb +6 -0
  72. data/lib/easypost/models/shipment.rb +10 -0
  73. data/lib/easypost/{tax_identifier.rb → models/tax_identifier.rb} +1 -1
  74. data/lib/easypost/models/tracker.rb +5 -0
  75. data/lib/easypost/models/user.rb +5 -0
  76. data/lib/easypost/models/webhook.rb +6 -0
  77. data/lib/easypost/models.rb +35 -0
  78. data/lib/easypost/services/address.rb +50 -0
  79. data/lib/easypost/services/api_key.rb +8 -0
  80. data/lib/easypost/services/base.rb +27 -0
  81. data/lib/easypost/services/batch.rb +53 -0
  82. data/lib/easypost/services/beta_rate.rb +12 -0
  83. data/lib/easypost/services/beta_referral_customer.rb +40 -0
  84. data/lib/easypost/services/billing.rb +75 -0
  85. data/lib/easypost/services/carrier_account.rb +44 -0
  86. data/lib/easypost/services/carrier_metadata.rb +22 -0
  87. data/lib/easypost/services/customs_info.rb +17 -0
  88. data/lib/easypost/services/customs_item.rb +15 -0
  89. data/lib/easypost/services/end_shipper.rb +31 -0
  90. data/lib/easypost/services/event.rb +32 -0
  91. data/lib/easypost/services/insurance.rb +26 -0
  92. data/lib/easypost/services/order.rb +30 -0
  93. data/lib/easypost/services/parcel.rb +16 -0
  94. data/lib/easypost/services/pickup.rb +40 -0
  95. data/lib/easypost/services/rate.rb +8 -0
  96. data/lib/easypost/services/referral_customer.rb +103 -0
  97. data/lib/easypost/services/refund.rb +26 -0
  98. data/lib/easypost/services/report.rb +42 -0
  99. data/lib/easypost/services/scan_form.rb +25 -0
  100. data/lib/easypost/services/shipment.rb +106 -0
  101. data/lib/easypost/services/tracker.rb +38 -0
  102. data/lib/easypost/services/user.rb +66 -0
  103. data/lib/easypost/services/webhook.rb +34 -0
  104. data/lib/easypost/services.rb +32 -0
  105. data/lib/easypost/util.rb +116 -161
  106. data/lib/easypost/utilities/constants.rb +5 -0
  107. data/lib/easypost/utilities/json.rb +23 -0
  108. data/lib/easypost/utilities/static_mapper.rb +73 -0
  109. data/lib/easypost/utilities/system.rb +36 -0
  110. data/lib/easypost.rb +14 -136
  111. metadata +177 -65
  112. data/.rubocop.yml +0 -11
  113. data/CODE_OF_CONDUCT.md +0 -16
  114. data/CONTRIBUTING.md +0 -47
  115. data/SECURITY.md +0 -7
  116. data/SUPPORT.md +0 -3
  117. data/easycop.yml +0 -180
  118. data/lib/easypost/address.rb +0 -40
  119. data/lib/easypost/api_key.rb +0 -5
  120. data/lib/easypost/batch.rb +0 -50
  121. data/lib/easypost/beta/end_shipper.rb +0 -44
  122. data/lib/easypost/beta/referral.rb +0 -110
  123. data/lib/easypost/beta.rb +0 -7
  124. data/lib/easypost/billing.rb +0 -72
  125. data/lib/easypost/brand.rb +0 -13
  126. data/lib/easypost/carrier_account.rb +0 -9
  127. data/lib/easypost/carrier_type.rb +0 -5
  128. data/lib/easypost/customs_info.rb +0 -9
  129. data/lib/easypost/customs_item.rb +0 -9
  130. data/lib/easypost/end_shipper.rb +0 -24
  131. data/lib/easypost/error.rb +0 -32
  132. data/lib/easypost/event.rb +0 -11
  133. data/lib/easypost/object.rb +0 -171
  134. data/lib/easypost/order.rb +0 -37
  135. data/lib/easypost/parcel.rb +0 -9
  136. data/lib/easypost/payment_method.rb +0 -11
  137. data/lib/easypost/pickup.rb +0 -37
  138. data/lib/easypost/rate.rb +0 -9
  139. data/lib/easypost/referral.rb +0 -102
  140. data/lib/easypost/report.rb +0 -23
  141. data/lib/easypost/resource.rb +0 -106
  142. data/lib/easypost/scan_form.rb +0 -11
  143. data/lib/easypost/shipment.rb +0 -155
  144. data/lib/easypost/tracker.rb +0 -12
  145. data/lib/easypost/user.rb +0 -71
  146. data/lib/easypost/webhook.rb +0 -57
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../models'
4
+
5
+ module EasyPost::InternalUtilities::StaticMapper
6
+ BY_PREFIX = {
7
+ 'adr' => EasyPost::Models::Address,
8
+ 'ak' => EasyPost::Models::ApiKey,
9
+ 'bank' => EasyPost::Models::PaymentMethod,
10
+ 'batch' => EasyPost::Models::Batch,
11
+ 'brd' => EasyPost::Models::Brand,
12
+ 'ca' => EasyPost::Models::CarrierAccount,
13
+ 'card' => EasyPost::Models::PaymentMethod,
14
+ 'cstinfo' => EasyPost::Models::CustomsInfo,
15
+ 'cstitem' => EasyPost::Models::CustomsItem,
16
+ 'es' => EasyPost::Models::EndShipper,
17
+ 'evt' => EasyPost::Models::Event,
18
+ 'hook' => EasyPost::Models::Webhook,
19
+ 'ins' => EasyPost::Models::Insurance,
20
+ 'order' => EasyPost::Models::Order,
21
+ 'payload' => EasyPost::Models::Payload,
22
+ 'pickup' => EasyPost::Models::Pickup,
23
+ 'pickuprate' => EasyPost::Models::PickupRate,
24
+ 'pl' => EasyPost::Models::PostageLabel,
25
+ 'plrep' => EasyPost::Models::Report,
26
+ 'prcl' => EasyPost::Models::Parcel,
27
+ 'rate' => EasyPost::Models::Rate,
28
+ 'refrep' => EasyPost::Models::Report,
29
+ 'rfnd' => EasyPost::Models::Refund,
30
+ 'sf' => EasyPost::Models::ScanForm,
31
+ 'shp' => EasyPost::Models::Shipment,
32
+ 'shpinvrep' => EasyPost::Models::Report,
33
+ 'shprep' => EasyPost::Models::Report,
34
+ 'trk' => EasyPost::Models::Tracker,
35
+ 'trkrep' => EasyPost::Models::Report,
36
+ 'user' => EasyPost::Models::User,
37
+ }.freeze
38
+
39
+ BY_TYPE = {
40
+ 'Address' => EasyPost::Models::Address,
41
+ 'ApiKey' => EasyPost::Models::ApiKey,
42
+ 'BankAccount' => EasyPost::Models::PaymentMethod,
43
+ 'Batch' => EasyPost::Models::Batch,
44
+ 'Brand' => EasyPost::Models::Brand,
45
+ 'CarbonOffset' => EasyPost::Models::CarbonOffset,
46
+ 'CarrierAccount' => EasyPost::Models::CarrierAccount,
47
+ 'CreditCard' => EasyPost::Models::PaymentMethod,
48
+ 'CustomsInfo' => EasyPost::Models::CustomsInfo,
49
+ 'CustomsItem' => EasyPost::Models::CustomsItem,
50
+ 'EndShipper' => EasyPost::Models::EndShipper,
51
+ 'Event' => EasyPost::Models::Event,
52
+ 'Insurance' => EasyPost::Models::Insurance,
53
+ 'Order' => EasyPost::Models::Order,
54
+ 'Parcel' => EasyPost::Models::Parcel,
55
+ 'PaymentLogReport' => EasyPost::Models::Report,
56
+ 'Pickup' => EasyPost::Models::Pickup,
57
+ 'PickupRate' => EasyPost::Models::PickupRate,
58
+ 'PostageLabel' => EasyPost::Models::PostageLabel,
59
+ 'Rate' => EasyPost::Models::Rate,
60
+ 'Refund' => EasyPost::Models::Refund,
61
+ 'RefundReport' => EasyPost::Models::Report,
62
+ 'Report' => EasyPost::Models::Report,
63
+ 'ScanForm' => EasyPost::Models::ScanForm,
64
+ 'Shipment' => EasyPost::Models::Shipment,
65
+ 'ShipmentInvoiceReport' => EasyPost::Models::Report,
66
+ 'ShipmentReport' => EasyPost::Models::Report,
67
+ 'TaxIdentifier' => EasyPost::Models::TaxIdentifier,
68
+ 'Tracker' => EasyPost::Models::Tracker,
69
+ 'TrackerReport' => EasyPost::Models::Report,
70
+ 'User' => EasyPost::Models::User,
71
+ 'Webhook' => EasyPost::Models::Webhook,
72
+ }.freeze
73
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EasyPost::InternalUtilities::System
4
+ def self.os_name
5
+ case RUBY_PLATFORM
6
+ when /linux/i
7
+ 'Linux'
8
+ when /darwin/i
9
+ 'Darwin'
10
+ when /cygwin|mswin|mingw|bccwin|wince|emx/i
11
+ 'Windows'
12
+ else
13
+ 'Unknown'
14
+ end
15
+ end
16
+
17
+ def self.os_version
18
+ Gem::Platform.local.version
19
+ end
20
+
21
+ def self.os_arch
22
+ Gem::Platform.local.cpu
23
+ end
24
+
25
+ def self.ruby_version
26
+ RUBY_VERSION
27
+ end
28
+
29
+ def self.ruby_patchlevel
30
+ RUBY_PATCHLEVEL
31
+ end
32
+
33
+ def self.lib_version
34
+ File.open(File.expand_path('../../VERSION', __dir__)).read.strip
35
+ end
36
+ end
data/lib/easypost.rb CHANGED
@@ -5,149 +5,27 @@ require 'cgi'
5
5
  require 'net/http'
6
6
 
7
7
  require 'easypost/version'
8
- require 'easypost/object'
9
- require 'easypost/resource'
10
- require 'easypost/error'
11
8
  require 'easypost/connection'
12
-
13
- # Resources
14
- require 'easypost/address'
15
- require 'easypost/api_key'
16
- require 'easypost/batch'
17
- require 'easypost/billing'
18
- require 'easypost/brand'
19
- require 'easypost/carbon_offset'
20
- require 'easypost/carrier_account'
21
- require 'easypost/carrier_type'
22
- require 'easypost/customs_info'
23
- require 'easypost/customs_item'
24
- require 'easypost/end_shipper'
25
- require 'easypost/event'
26
- require 'easypost/insurance'
27
- require 'easypost/order'
28
- require 'easypost/parcel'
29
- require 'easypost/payment_method' # deprecated
30
- require 'easypost/pickup_rate'
31
- require 'easypost/pickup'
32
- require 'easypost/postage_label'
33
- require 'easypost/rate'
34
- require 'easypost/referral'
35
- require 'easypost/refund'
36
- require 'easypost/report'
37
- require 'easypost/scan_form'
38
- require 'easypost/shipment'
39
- require 'easypost/tax_identifier'
40
- require 'easypost/tracker'
41
- require 'easypost/user'
42
- require 'easypost/webhook'
43
- require 'easypost/beta'
44
-
45
9
  require 'easypost/util'
46
10
 
47
- module EasyPost
48
- DEFAULT_API_BASE = 'https://api.easypost.com'
49
-
50
- class << self
51
- attr_accessor :api_key, :api_base
52
- attr_writer :default_connection
53
- end
54
-
55
- self.api_base = DEFAULT_API_BASE
56
-
57
- def self.user_agent
58
- @user_agent ||=
59
- "EasyPost/v2 RubyClient/#{EasyPost::VERSION} Ruby/#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} " \
60
- "OS/#{EasyPost::Util.os_name} OSVersion/#{EasyPost::Util.os_version} " \
61
- "OSArch/#{EasyPost::Util.os_arch}"
62
- end
63
-
64
- def self.default_headers
65
- @default_headers ||= {
66
- 'Content-Type' => 'application/json',
67
- 'User-Agent' => user_agent,
68
- }
69
- end
70
-
71
- def self.default_connection
72
- @default_connection ||= EasyPost::Connection.new(
73
- uri: URI(api_base),
74
- config: http_config,
75
- )
76
- end
11
+ # Client
12
+ require 'easypost/client'
13
+ require 'easypost/http_client'
77
14
 
78
- def self.authorization(key)
79
- "Basic #{Base64.strict_encode64("#{key}:")}"
80
- end
15
+ # Services
16
+ require 'easypost/services'
81
17
 
82
- # Reset the HTTP config.
83
- def self.reset_http_config
84
- http_config.clear
85
- self.default_connection = nil
86
- end
18
+ # Models
19
+ require 'easypost/models'
87
20
 
88
- def self.default_http_config
89
- http_config = {
90
- timeout: 60,
91
- open_timeout: 30,
92
- verify_ssl: OpenSSL::SSL::VERIFY_PEER,
93
- }
21
+ # Exceptions
22
+ require 'easypost/errors'
94
23
 
95
- ruby_version = Gem::Version.new(RUBY_VERSION)
96
- if ruby_version >= Gem::Version.new('2.5.0')
97
- http_config[:min_version] = OpenSSL::SSL::TLS1_2_VERSION
98
- else
99
- http_config[:ssl_version] = :TLSv1_2 # rubocop:disable Naming/VariableNumber
100
- end
24
+ # Internal Utilities
25
+ require 'easypost/internal_utilities'
101
26
 
102
- http_config
103
- end
27
+ # Hooks
28
+ require 'easypost/hooks'
104
29
 
105
- # Get the HTTP config.
106
- def self.http_config
107
- @http_config ||= default_http_config
108
- end
109
-
110
- # Set the HTTP config.
111
- def self.http_config=(http_config_params)
112
- http_config.merge!(http_config_params)
113
-
114
- self.default_connection = nil
115
- end
116
-
117
- # Create an EasyPost Client.
118
- #
119
- # @deprecated
120
- def self.make_client(url)
121
- EasyPost::Connection.new(uri: URI(url), config: http_config).create
122
- end
123
-
124
- # Make an HTTP request against the {default_connection}
125
- #
126
- # @param method [Symbol] the HTTP Verb (get, method, put, post, etc.)
127
- # @param path [String] URI path of the resource
128
- # @param requested_api_key [String] ({EasyPost.api_key}) key set Authorization header.
129
- # @param body [Object] (nil) object to be dumped to JSON
130
- # @raise [EasyPost::Error] if the response has a non-2xx status code
131
- # @return [Hash] JSON object parsed from the response body
132
- def self.make_request(method, path, api_key = nil, body = nil)
133
- default_connection.call(method, path, api_key || EasyPost.api_key, body)
134
- end
135
-
136
- def self.parse_response(status:, body:, json:)
137
- if status < 200 || status >= 300
138
- error = JSON.parse(body)['error']
139
-
140
- raise EasyPost::Error.new(
141
- error['message'],
142
- status,
143
- error['code'],
144
- error['errors'],
145
- body,
146
- )
147
- end
148
-
149
- json || !body.nil? && !body.match(/\A\s+\z/) ? JSON.parse(body) : body
150
- rescue JSON::ParserError
151
- raise "Invalid response object from API, unable to decode.\n#{body}"
152
- end
30
+ module EasyPost
153
31
  end
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.8.1
4
+ version: 5.1.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-10-24 00:00:00.000000000 Z
11
+ date: 2023-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: brakeman
@@ -16,14 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '5.2'
19
+ version: '5.4'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '5.2'
26
+ version: '5.4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 2.7.5
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 2.7.5
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: pry
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +52,20 @@ dependencies:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0.14'
55
+ - !ruby/object:Gem::Dependency
56
+ name: psych
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '5.1'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '5.1'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: rake
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -52,62 +80,76 @@ dependencies:
52
80
  - - "~>"
53
81
  - !ruby/object:Gem::Version
54
82
  version: '13.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rdoc
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '6.5'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '6.5'
55
97
  - !ruby/object:Gem::Dependency
56
98
  name: rspec
57
99
  requirement: !ruby/object:Gem::Requirement
58
100
  requirements:
59
101
  - - "~>"
60
102
  - !ruby/object:Gem::Version
61
- version: '3.10'
103
+ version: '3.12'
62
104
  type: :development
63
105
  prerelease: false
64
106
  version_requirements: !ruby/object:Gem::Requirement
65
107
  requirements:
66
108
  - - "~>"
67
109
  - !ruby/object:Gem::Version
68
- version: '3.10'
110
+ version: '3.12'
69
111
  - !ruby/object:Gem::Dependency
70
112
  name: rubocop
71
113
  requirement: !ruby/object:Gem::Requirement
72
114
  requirements:
73
- - - '='
115
+ - - "~>"
74
116
  - !ruby/object:Gem::Version
75
- version: '1.27'
117
+ version: '1.49'
76
118
  type: :development
77
119
  prerelease: false
78
120
  version_requirements: !ruby/object:Gem::Requirement
79
121
  requirements:
80
- - - '='
122
+ - - "~>"
81
123
  - !ruby/object:Gem::Version
82
- version: '1.27'
124
+ version: '1.49'
83
125
  - !ruby/object:Gem::Dependency
84
126
  name: rubocop-rspec
85
127
  requirement: !ruby/object:Gem::Requirement
86
128
  requirements:
87
- - - "~>"
129
+ - - '='
88
130
  - !ruby/object:Gem::Version
89
- version: '2.7'
131
+ version: '2.19'
90
132
  type: :development
91
133
  prerelease: false
92
134
  version_requirements: !ruby/object:Gem::Requirement
93
135
  requirements:
94
- - - "~>"
136
+ - - '='
95
137
  - !ruby/object:Gem::Version
96
- version: '2.7'
138
+ version: '2.19'
97
139
  - !ruby/object:Gem::Dependency
98
140
  name: simplecov
99
141
  requirement: !ruby/object:Gem::Requirement
100
142
  requirements:
101
143
  - - "~>"
102
144
  - !ruby/object:Gem::Version
103
- version: '0.21'
145
+ version: '0.22'
104
146
  type: :development
105
147
  prerelease: false
106
148
  version_requirements: !ruby/object:Gem::Requirement
107
149
  requirements:
108
150
  - - "~>"
109
151
  - !ruby/object:Gem::Version
110
- version: '0.21'
152
+ version: '0.22'
111
153
  - !ruby/object:Gem::Dependency
112
154
  name: simplecov-lcov
113
155
  requirement: !ruby/object:Gem::Requirement
@@ -122,34 +164,48 @@ dependencies:
122
164
  - - "~>"
123
165
  - !ruby/object:Gem::Version
124
166
  version: '0.8'
167
+ - !ruby/object:Gem::Dependency
168
+ name: typhoeus
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: 1.4.0
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: 1.4.0
125
181
  - !ruby/object:Gem::Dependency
126
182
  name: vcr
127
183
  requirement: !ruby/object:Gem::Requirement
128
184
  requirements:
129
- - - '='
185
+ - - "~>"
130
186
  - !ruby/object:Gem::Version
131
- version: '6.0'
187
+ version: '6.1'
132
188
  type: :development
133
189
  prerelease: false
134
190
  version_requirements: !ruby/object:Gem::Requirement
135
191
  requirements:
136
- - - '='
192
+ - - "~>"
137
193
  - !ruby/object:Gem::Version
138
- version: '6.0'
194
+ version: '6.1'
139
195
  - !ruby/object:Gem::Dependency
140
196
  name: webmock
141
197
  requirement: !ruby/object:Gem::Requirement
142
198
  requirements:
143
199
  - - "~>"
144
200
  - !ruby/object:Gem::Version
145
- version: '3.14'
201
+ version: '3.18'
146
202
  type: :development
147
203
  prerelease: false
148
204
  version_requirements: !ruby/object:Gem::Requirement
149
205
  requirements:
150
206
  - - "~>"
151
207
  - !ruby/object:Gem::Version
152
- version: '3.14'
208
+ version: '3.18'
153
209
  description: Client library for accessing the EasyPost shipping API via Ruby.
154
210
  email: oss@easypost.com
155
211
  executables:
@@ -165,61 +221,117 @@ files:
165
221
  - ".github/workflows/ci.yml"
166
222
  - ".gitignore"
167
223
  - ".gitmodules"
168
- - ".rubocop.yml"
169
224
  - CHANGELOG.md
170
- - CODE_OF_CONDUCT.md
171
- - CONTRIBUTING.md
172
225
  - Gemfile
173
226
  - LICENSE
174
227
  - Makefile
175
228
  - README.md
176
229
  - Rakefile
177
- - SECURITY.md
178
- - SUPPORT.md
179
230
  - UPGRADE_GUIDE.md
180
231
  - VERSION
181
232
  - bin/easypost-irb
182
- - easycop.yml
183
233
  - easypost.gemspec
184
234
  - lib/easypost.rb
185
- - lib/easypost/address.rb
186
- - lib/easypost/api_key.rb
187
- - lib/easypost/batch.rb
188
- - lib/easypost/beta.rb
189
- - lib/easypost/beta/end_shipper.rb
190
- - lib/easypost/beta/referral.rb
191
- - lib/easypost/billing.rb
192
- - lib/easypost/brand.rb
193
- - lib/easypost/carbon_offset.rb
194
- - lib/easypost/carrier_account.rb
195
- - lib/easypost/carrier_type.rb
235
+ - lib/easypost/client.rb
196
236
  - lib/easypost/connection.rb
197
- - lib/easypost/customs_info.rb
198
- - lib/easypost/customs_item.rb
199
- - lib/easypost/end_shipper.rb
200
- - lib/easypost/error.rb
201
- - lib/easypost/event.rb
202
- - lib/easypost/insurance.rb
203
- - lib/easypost/object.rb
204
- - lib/easypost/order.rb
205
- - lib/easypost/parcel.rb
206
- - lib/easypost/payment_method.rb
207
- - lib/easypost/pickup.rb
208
- - lib/easypost/pickup_rate.rb
209
- - lib/easypost/postage_label.rb
210
- - lib/easypost/rate.rb
211
- - lib/easypost/referral.rb
212
- - lib/easypost/refund.rb
213
- - lib/easypost/report.rb
214
- - lib/easypost/resource.rb
215
- - lib/easypost/scan_form.rb
216
- - lib/easypost/shipment.rb
217
- - lib/easypost/tax_identifier.rb
218
- - lib/easypost/tracker.rb
219
- - lib/easypost/user.rb
237
+ - lib/easypost/constants.rb
238
+ - lib/easypost/errors.rb
239
+ - lib/easypost/errors/api/api_error.rb
240
+ - lib/easypost/errors/api/bad_request_error.rb
241
+ - lib/easypost/errors/api/connection_error.rb
242
+ - lib/easypost/errors/api/external_api_error.rb
243
+ - lib/easypost/errors/api/forbidden_error.rb
244
+ - lib/easypost/errors/api/gateway_timeout_error.rb
245
+ - lib/easypost/errors/api/internal_server_error.rb
246
+ - lib/easypost/errors/api/invalid_request_error.rb
247
+ - lib/easypost/errors/api/method_not_allowed_error.rb
248
+ - lib/easypost/errors/api/not_found_error.rb
249
+ - lib/easypost/errors/api/payment_error.rb
250
+ - lib/easypost/errors/api/proxy_error.rb
251
+ - lib/easypost/errors/api/rate_limit_error.rb
252
+ - lib/easypost/errors/api/redirect_error.rb
253
+ - lib/easypost/errors/api/retry_error.rb
254
+ - lib/easypost/errors/api/service_unavailable_error.rb
255
+ - lib/easypost/errors/api/ssl_error.rb
256
+ - lib/easypost/errors/api/timeout_error.rb
257
+ - lib/easypost/errors/api/unauthorized_error.rb
258
+ - lib/easypost/errors/api/unknown_api_error.rb
259
+ - lib/easypost/errors/easy_post_error.rb
260
+ - lib/easypost/errors/end_of_pagination_error.rb
261
+ - lib/easypost/errors/filtering_error.rb
262
+ - lib/easypost/errors/invalid_object_error.rb
263
+ - lib/easypost/errors/invalid_parameter_error.rb
264
+ - lib/easypost/errors/missing_parameter_error.rb
265
+ - lib/easypost/errors/signature_verification_error.rb
266
+ - lib/easypost/hooks.rb
267
+ - lib/easypost/hooks/request_context.rb
268
+ - lib/easypost/hooks/response_context.rb
269
+ - lib/easypost/http_client.rb
270
+ - lib/easypost/internal_utilities.rb
271
+ - lib/easypost/models.rb
272
+ - lib/easypost/models/address.rb
273
+ - lib/easypost/models/api_key.rb
274
+ - lib/easypost/models/base.rb
275
+ - lib/easypost/models/batch.rb
276
+ - lib/easypost/models/brand.rb
277
+ - lib/easypost/models/carbon_offset.rb
278
+ - lib/easypost/models/carrier_account.rb
279
+ - lib/easypost/models/customs_info.rb
280
+ - lib/easypost/models/customs_item.rb
281
+ - lib/easypost/models/end_shipper.rb
282
+ - lib/easypost/models/error.rb
283
+ - lib/easypost/models/event.rb
284
+ - lib/easypost/models/insurance.rb
285
+ - lib/easypost/models/order.rb
286
+ - lib/easypost/models/parcel.rb
287
+ - lib/easypost/models/payload.rb
288
+ - lib/easypost/models/payment_method.rb
289
+ - lib/easypost/models/pickup.rb
290
+ - lib/easypost/models/pickup_rate.rb
291
+ - lib/easypost/models/postage_label.rb
292
+ - lib/easypost/models/rate.rb
293
+ - lib/easypost/models/referral.rb
294
+ - lib/easypost/models/refund.rb
295
+ - lib/easypost/models/report.rb
296
+ - lib/easypost/models/scan_form.rb
297
+ - lib/easypost/models/shipment.rb
298
+ - lib/easypost/models/tax_identifier.rb
299
+ - lib/easypost/models/tracker.rb
300
+ - lib/easypost/models/user.rb
301
+ - lib/easypost/models/webhook.rb
302
+ - lib/easypost/services.rb
303
+ - lib/easypost/services/address.rb
304
+ - lib/easypost/services/api_key.rb
305
+ - lib/easypost/services/base.rb
306
+ - lib/easypost/services/batch.rb
307
+ - lib/easypost/services/beta_rate.rb
308
+ - lib/easypost/services/beta_referral_customer.rb
309
+ - lib/easypost/services/billing.rb
310
+ - lib/easypost/services/carrier_account.rb
311
+ - lib/easypost/services/carrier_metadata.rb
312
+ - lib/easypost/services/customs_info.rb
313
+ - lib/easypost/services/customs_item.rb
314
+ - lib/easypost/services/end_shipper.rb
315
+ - lib/easypost/services/event.rb
316
+ - lib/easypost/services/insurance.rb
317
+ - lib/easypost/services/order.rb
318
+ - lib/easypost/services/parcel.rb
319
+ - lib/easypost/services/pickup.rb
320
+ - lib/easypost/services/rate.rb
321
+ - lib/easypost/services/referral_customer.rb
322
+ - lib/easypost/services/refund.rb
323
+ - lib/easypost/services/report.rb
324
+ - lib/easypost/services/scan_form.rb
325
+ - lib/easypost/services/shipment.rb
326
+ - lib/easypost/services/tracker.rb
327
+ - lib/easypost/services/user.rb
328
+ - lib/easypost/services/webhook.rb
220
329
  - lib/easypost/util.rb
330
+ - lib/easypost/utilities/constants.rb
331
+ - lib/easypost/utilities/json.rb
332
+ - lib/easypost/utilities/static_mapper.rb
333
+ - lib/easypost/utilities/system.rb
221
334
  - lib/easypost/version.rb
222
- - lib/easypost/webhook.rb
223
335
  homepage: https://www.easypost.com/docs
224
336
  licenses:
225
337
  - MIT
@@ -232,14 +344,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
232
344
  requirements:
233
345
  - - ">="
234
346
  - !ruby/object:Gem::Version
235
- version: '2.5'
347
+ version: '2.6'
236
348
  required_rubygems_version: !ruby/object:Gem::Requirement
237
349
  requirements:
238
350
  - - ">="
239
351
  - !ruby/object:Gem::Version
240
352
  version: '0'
241
353
  requirements: []
242
- rubygems_version: 3.3.11
354
+ rubygems_version: 3.4.10
243
355
  signing_key:
244
356
  specification_version: 4
245
357
  summary: EasyPost Ruby Client Library
data/.rubocop.yml DELETED
@@ -1,11 +0,0 @@
1
- inherit_from: easycop.yml
2
-
3
- AllCops:
4
- SuggestExtensions: false
5
- # We are ignoring RSpec/FilePath because Simplecov doesn't play nice with nested spec files
6
- RSpec/FilePath:
7
- Enabled: false
8
- # TODO: Remove this once we start using keyword arguments
9
- Style/OptionalBooleanParameter:
10
- Exclude:
11
- - 'lib/easypost/shipment.rb'
data/CODE_OF_CONDUCT.md DELETED
@@ -1,16 +0,0 @@
1
- # Code of Conduct
2
-
3
- > Remember the golden rule? Treat others as you'd like to be treated
4
-
5
- ## Standards
6
-
7
- - Create a welcoming and safe community for `everyone`
8
- - Demonstrate empathy towards others, realize that everyone has a different `level of experience`
9
- - Be respectful of others opinions, viewpoints, and experiences
10
- - Give and receive respectful constructive feedback
11
- - Accept responsibility and apologize when necessary
12
- - Focus on what is best for the overall community
13
-
14
- ## Failure to Follow Standards
15
-
16
- If there is a failure to follow the standards laid out above, the user will first be warned. If the offending behavior continues, the user may be blocked entirely.