easypost 5.2.0 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -0
  3. data/UPGRADE_GUIDE.md +31 -0
  4. data/VERSION +1 -1
  5. data/lib/easypost/client.rb +1 -3
  6. data/lib/easypost/constants.rb +1 -0
  7. data/lib/easypost/models/base.rb +3 -1
  8. data/lib/easypost/models.rb +0 -1
  9. data/lib/easypost/services/address.rb +22 -7
  10. data/lib/easypost/services/api_key.rb +23 -2
  11. data/lib/easypost/services/base.rb +10 -13
  12. data/lib/easypost/services/batch.rb +23 -15
  13. data/lib/easypost/services/beta_rate.rb +2 -1
  14. data/lib/easypost/services/beta_referral_customer.rb +9 -5
  15. data/lib/easypost/services/billing.rb +4 -3
  16. data/lib/easypost/services/carrier_account.rb +9 -4
  17. data/lib/easypost/services/carrier_metadata.rb +2 -2
  18. data/lib/easypost/services/carrier_type.rb +3 -1
  19. data/lib/easypost/services/customs_info.rb +5 -2
  20. data/lib/easypost/services/customs_item.rb +6 -2
  21. data/lib/easypost/services/end_shipper.rb +10 -4
  22. data/lib/easypost/services/event.rb +18 -5
  23. data/lib/easypost/services/insurance.rb +15 -4
  24. data/lib/easypost/services/order.rb +12 -4
  25. data/lib/easypost/services/parcel.rb +6 -2
  26. data/lib/easypost/services/pickup.rb +21 -6
  27. data/lib/easypost/services/rate.rb +3 -1
  28. data/lib/easypost/services/referral_customer.rb +22 -6
  29. data/lib/easypost/services/refund.rb +15 -4
  30. data/lib/easypost/services/report.rb +18 -6
  31. data/lib/easypost/services/scan_form.rb +15 -4
  32. data/lib/easypost/services/shipment.rb +41 -26
  33. data/lib/easypost/services/tracker.rb +21 -9
  34. data/lib/easypost/services/user.rb +21 -6
  35. data/lib/easypost/services/webhook.rb +12 -4
  36. data/lib/easypost/utilities/constants.rb +1 -0
  37. data/lib/easypost/utilities/json.rb +7 -1
  38. data/lib/easypost/utilities/static_mapper.rb +0 -1
  39. metadata +2 -3
  40. data/lib/easypost/models/carbon_offset.rb +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 043543a947c3d50354a25d984eded8e68e37d9af9d7e2c6158176201426cafa1
4
- data.tar.gz: 15ebc3486ec63ac23b0dfa6de82001537a72697863e1587fd9a1d909cde33a9a
3
+ metadata.gz: d84472fd17512bf9f3c4a2a670a025e76154bbe93fffa5a8e9139309af4feac2
4
+ data.tar.gz: 4c7c6df535c2700e54751e878e239ba689be42faec299993a19993d6ceb2fc0f
5
5
  SHA512:
6
- metadata.gz: 8a004acaa7797b54fd7226e4321a47e9aaa11aa055ee39dd886456d547f3e9ec847046c77f2f548a3f510c9d992842c4896fcb5beb6ee060280098e87ee2ae40
7
- data.tar.gz: 7b4f5377749b4d65278f744befef446cfcfe7372f171e64a6b42996b9c0c988b0a6370f949d2986698fc5484f66d4bc3cb879b0f714b04a25e9216c196d960ee
6
+ metadata.gz: b7337d5099aa61da9c7bf21ce1c7d9fe9c6e9b9f011ab615949934e6e42b192785f87481cadfcbd1e244d682f323edbfd6a42e6df409b900749e92d83d474c63
7
+ data.tar.gz: fee3c31633179b4337ded644d83e61d4b7f776ac873954cf01b1f1c613044c8cdf46cd34b1f3a8a40333823050ff78eb0c432c6db1fe269adc113acc79efeae9
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v6.0.0 (2023-12-06)
4
+
5
+ - Removes `with_carbon_offset` parameter from `create`, `buy` and `regenerate_rates` methods in the shipment service since now EasyPost offers carbon neutral shipments by default for free
6
+ - Fixes a bug where the original filtering criteria of `all` calls wasn't passed along to `get_next_page` calls. Now, these are persisted via `_params` key on response objects
7
+ - Removes the undocumented `create_and_buy` function from the Batch service. The proper usage is to create a batch first and buy it separately
8
+
9
+ ## v5.3.0 (2023-10-11)
10
+
11
+ - Migrate API Key-related functions out of `user` service into `api_key` service, deprecating the old and introducing the new
12
+
3
13
  ## v5.2.0 (2023-09-14)
4
14
 
5
15
  - Add `carrier_type` service + `carrier_type.all` method
data/UPGRADE_GUIDE.md CHANGED
@@ -2,11 +2,42 @@
2
2
 
3
3
  Use the following guide to assist in the upgrade process of the `easypost-ruby` library between major versions.
4
4
 
5
+ - [Upgrading from 5.x to 6.0](#upgrading-from-5x-to-60)
5
6
  - [Upgrading from 4.x to 5.0](#upgrading-from-4x-to-50)
6
7
  - [Upgrading from 3.x to 4.0](#upgrading-from-3x-to-40)
7
8
 
9
+ ## Upgrading from 5.x to 6.0
10
+
11
+ ### 6.0 High Impact Changes
12
+
13
+ - [Carbon Offset Removed](#60-carbon-offset-removed)
14
+
15
+ ### 6.0 Low Impact Changes
16
+
17
+ - [Create and Buy Batch Function Removed](#60-create-and-buy-batch-function-removed)
18
+
19
+ ## 6.0 Carbon Offset Removed
20
+
21
+ *Likelihood of Impact: **High***
22
+
23
+ EasyPost now offers Carbon Neutral shipments by default for free! Because of this, there is no longer a need to specify if you want to offset the carbon footprint of a shipment.
24
+
25
+ The `with_carbon_offset` parameter of the `create`, `buy`, and `regenerate_rates` shipment functions has been removed.
26
+
27
+ This is a high-impact change for those using `EndShippers`, as the signature for the `create` and `buy` shipment function has changed. You will need to inspect these callsites to ensure that the EndShipper parameter is being passed in the correct place.
28
+
29
+ ## 6.0 Create and Buy Batch Function Removed
30
+
31
+ *Likelihood of Impact: **Low***
32
+
33
+ The `create_and_buy` batch endpoint has been deprecated, and the `create_and_buy` Batch service function has been removed.
34
+
35
+ The correct procedure is to first create a batch and then purchase it with two separate API calls.
36
+
8
37
  ## Upgrading from 4.x to 5.0
9
38
 
39
+ **NOTICE:** v5 is deprecated.
40
+
10
41
  ### 5.0 High Impact Changes
11
42
 
12
43
  - [New Client object](#50-thread-safe-with-client-object)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 5.2.0
1
+ 6.0.0
@@ -72,7 +72,6 @@ class EasyPost::Client
72
72
  #
73
73
  # @param method [Symbol] the HTTP Verb (get, method, put, post, etc.)
74
74
  # @param endpoint [String] URI path of the resource
75
- # @param cls [Class] the class to deserialize to
76
75
  # @param body [Object] (nil) object to be dumped to JSON
77
76
  # @param api_version [String] the version of API to hit
78
77
  # @raise [EasyPost::Error] if the response has a non-2xx status code
@@ -80,7 +79,6 @@ class EasyPost::Client
80
79
  def make_request(
81
80
  method,
82
81
  endpoint,
83
- cls = EasyPost::Models::EasyPostObject,
84
82
  body = nil,
85
83
  api_version = EasyPost::InternalUtilities::Constants::API_VERSION
86
84
  )
@@ -89,7 +87,7 @@ class EasyPost::Client
89
87
  potential_error = EasyPost::Errors::ApiError.handle_api_error(response)
90
88
  raise potential_error unless potential_error.nil?
91
89
 
92
- EasyPost::InternalUtilities::Json.convert_json_to_object(response.body, cls)
90
+ EasyPost::InternalUtilities::Json.parse_json(response.body)
93
91
  end
94
92
 
95
93
  # Subscribe a request hook
@@ -6,6 +6,7 @@ class EasyPost::Constants
6
6
  INVALID_PAYMENT_METHOD = 'The chosen payment method is not valid. Please try again.'
7
7
  MISSING_REQUIRED_PARAMETER = 'Required parameter %s is missing.'
8
8
  NO_MATCHING_RATES = 'No matching rates found.'
9
+ NO_USER_FOUND = 'No user found with the given id.'
9
10
  NO_MORE_PAGES = 'There are no more pages to retrieve.'
10
11
  NO_PAYMENT_METHODS = 'Billing has not been setup for this user. Please add a payment method.'
11
12
  STRIPE_CARD_CREATE_FAILED = 'Could not send card details to Stripe, please try again later.'
@@ -32,7 +32,9 @@ class EasyPost::Models::Object
32
32
  private
33
33
 
34
34
  def add_properties(values)
35
- values.each do |key, _|
35
+ values.each_key do |key|
36
+ next if key == EasyPost::InternalUtilities::Constants::FILTERS_KEY
37
+
36
38
  define_singleton_method(key) { handle_value(@values[key]) } # getter
37
39
  define_singleton_method("#{key}=") { |v| @values[key] = handle_value(v) } # setter
38
40
  end
@@ -8,7 +8,6 @@ require_relative 'models/address'
8
8
  require_relative 'models/api_key'
9
9
  require_relative 'models/batch'
10
10
  require_relative 'models/brand'
11
- require_relative 'models/carbon_offset'
12
11
  require_relative 'models/carrier_account'
13
12
  require_relative 'models/carrier_type'
14
13
  require_relative 'models/customs_info'
@@ -17,7 +17,9 @@ class EasyPost::Services::Address < EasyPost::Services::Service
17
17
  wrapped_params[:verify_strict] = params[:verify_strict]
18
18
  end
19
19
 
20
- @client.make_request(:post, 'addresses', MODEL_CLASS, params)
20
+ response = @client.make_request(:post, 'addresses', params)
21
+
22
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
21
23
  end
22
24
 
23
25
  # Create and verify an Address in one call.
@@ -25,26 +27,39 @@ class EasyPost::Services::Address < EasyPost::Services::Service
25
27
  wrapped_params = {}
26
28
  wrapped_params[:address] = params
27
29
 
28
- @client.make_request(:post, 'addresses/create_and_verify', MODEL_CLASS, wrapped_params).address
30
+ response = @client.make_request(:post, 'addresses/create_and_verify', wrapped_params)
31
+
32
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS).address
29
33
  end
30
34
 
31
35
  # Verify an Address.
32
36
  def verify(id)
33
- @client.make_request(:get, "addresses/#{id}/verify", MODEL_CLASS).address
37
+ response = @client.make_request(:get, "addresses/#{id}/verify")
38
+
39
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS).address
34
40
  end
35
41
 
36
42
  # Retrieve an Address.
37
43
  def retrieve(id)
38
- @client.make_request(:get, "addresses/#{id}", MODEL_CLASS)
44
+ response = @client.make_request(:get, "addresses/#{id}")
45
+
46
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
39
47
  end
40
48
 
41
49
  # Retrieve all Addresses.
42
- def all(filters = {})
43
- @client.make_request(:get, 'addresses', MODEL_CLASS, filters)
50
+ def all(params = {})
51
+ filters = { key: 'addresses' }
52
+
53
+ get_all_helper('addresses', MODEL_CLASS, params, filters)
44
54
  end
45
55
 
46
56
  # Get the next page of addresses.
47
57
  def get_next_page(collection, page_size = nil)
48
- get_next_page_helper(collection, collection.addresses, 'addresses', MODEL_CLASS, page_size)
58
+ raise EasyPost::Errors::EndOfPaginationError.new unless more_pages?(collection)
59
+
60
+ params = { before_id: collection.addresses.last.id }
61
+ params[:page_size] = page_size unless page_size.nil?
62
+
63
+ all(params)
49
64
  end
50
65
  end
@@ -1,8 +1,29 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class EasyPost::Services::ApiKey < EasyPost::Services::Service
4
- # Retrieve all api keys.
4
+ # Retrieve a list of all ApiKey objects.
5
5
  def all
6
- @client.make_request(:get, 'api_keys', EasyPost::Models::ApiKey)
6
+ response = @client.make_request(:get, 'api_keys')
7
+
8
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, EasyPost::Models::ApiKey)
9
+ end
10
+
11
+ # Retrieve a list of ApiKey objects (works for the authenticated user or a child user).
12
+ def retrieve_api_keys_for_user(id)
13
+ api_keys = all
14
+
15
+ if api_keys.id == id
16
+ # This function was called on the authenticated user
17
+ return api_keys.keys
18
+ end
19
+
20
+ # This function was called on a child user (authenticated as parent, only return this child user's details).
21
+ api_keys.children.each do |child|
22
+ if child.id == id
23
+ return child.keys
24
+ end
25
+ end
26
+
27
+ raise EasyPost::Errors::FilteringError.new(EasyPost::Constants::NO_USER_FOUND)
7
28
  end
8
29
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative '../internal_utilities'
4
+
3
5
  # The base class for all services in the library.
4
6
  class EasyPost::Services::Service
5
7
  def initialize(client)
@@ -8,20 +10,15 @@ class EasyPost::Services::Service
8
10
 
9
11
  protected
10
12
 
11
- # Get next page of an object collection
12
- def get_next_page_helper(collection, current_page_items, endpoint, cls, page_size = nil)
13
- has_more = collection.has_more || false
14
- unless !has_more || current_page_items.nil? || current_page_items.empty?
15
- params = {}
16
- params[:before_id] = current_page_items.last.id
17
- unless page_size.nil?
18
- params[:page_size] = page_size
19
- end
13
+ def get_all_helper(endpoint, cls, params, filters = nil)
14
+ response = @client.make_request(:get, endpoint, params)
15
+
16
+ response[EasyPost::InternalUtilities::Constants::FILTERS_KEY] = filters unless filters.nil?
20
17
 
21
- @client.make_request(:get, endpoint, cls, params)
22
- end
18
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, cls)
19
+ end
23
20
 
24
- # issue with getting the next page
25
- raise EasyPost::Errors::EndOfPaginationError.new
21
+ def more_pages?(collection)
22
+ collection&.has_more
26
23
  end
27
24
  end
@@ -6,48 +6,56 @@ class EasyPost::Services::Batch < EasyPost::Services::Service
6
6
  # Create a Batch.
7
7
  def create(params = {})
8
8
  wrapped_params = { batch: params }
9
+ response = @client.make_request(:post, 'batches', wrapped_params)
9
10
 
10
- @client.make_request(:post, 'batches', MODEL_CLASS, wrapped_params)
11
- end
12
-
13
- # Create and buy a batch in one call.
14
- def create_and_buy(params = {})
15
- wrapped_params = { batch: params }
16
-
17
- @client.make_request(:post, 'batches/create_and_buy', MODEL_CLASS, wrapped_params)
11
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
18
12
  end
19
13
 
20
14
  def all(params = {})
21
- @client.make_request(:get, 'batches', EasyPost::Models::ApiKey, params)
15
+ filters = { key: 'batches' }
16
+
17
+ get_all_helper('batches', MODEL_CLASS, params, filters)
22
18
  end
23
19
 
24
20
  # Retrieve a Batch
25
21
  def retrieve(id)
26
- @client.make_request(:get, "batches/#{id}", MODEL_CLASS)
22
+ response = @client.make_request(:get, "batches/#{id}")
23
+
24
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
27
25
  end
28
26
 
29
27
  # Buy a Batch.
30
28
  def buy(id, params = {})
31
- @client.make_request(:post, "batches/#{id}/buy", MODEL_CLASS, params)
29
+ response = @client.make_request(:post, "batches/#{id}/buy", params)
30
+
31
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
32
32
  end
33
33
 
34
34
  # Convert the label format of a Batch.
35
35
  def label(id, params = {})
36
- @client.make_request(:post, "batches/#{id}/label", MODEL_CLASS, params)
36
+ response = @client.make_request(:post, "batches/#{id}/label", params)
37
+
38
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
37
39
  end
38
40
 
39
41
  # Remove Shipments from a Batch.
40
42
  def remove_shipments(id, params = {})
41
- @client.make_request(:post, "batches/#{id}/remove_shipments", MODEL_CLASS, params)
43
+ response = @client.make_request(:post, "batches/#{id}/remove_shipments", params)
44
+
45
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
42
46
  end
43
47
 
44
48
  # Add Shipments to a Batch.
45
49
  def add_shipments(id, params = {})
46
- @client.make_request(:post, "batches/#{id}/add_shipments", MODEL_CLASS, params)
50
+ response = @client.make_request(:post, "batches/#{id}/add_shipments", params)
51
+
52
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
47
53
  end
48
54
 
49
55
  # Create a ScanForm for a Batch.
50
56
  def create_scan_form(id, params = {})
51
- @client.make_request(:post, "batches/#{id}/scan_form", MODEL_CLASS, params)
57
+ response = @client.make_request(:post, "batches/#{id}/scan_form", params)
58
+
59
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
52
60
  end
53
61
  end
@@ -6,7 +6,8 @@ class EasyPost::Services::BetaRate < EasyPost::Services::Service
6
6
  wrapped_params = {
7
7
  shipment: params,
8
8
  }
9
+ response = @client.make_request(:post, 'rates', wrapped_params, 'beta')
9
10
 
10
- @client.make_request(:post, 'rates', EasyPost::Models::Rate, wrapped_params, 'beta').rates
11
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, EasyPost::Models::Rate).rates
11
12
  end
12
13
  end
@@ -10,13 +10,14 @@ class EasyPost::Services::BetaReferralCustomer < EasyPost::Services::Service
10
10
  priority: priority.downcase,
11
11
  },
12
12
  }
13
- @client.make_request(
13
+ response = @client.make_request(
14
14
  :post,
15
15
  'referral_customers/payment_method',
16
- EasyPost::Models::EasyPostObject,
17
16
  wrapped_params,
18
17
  'beta',
19
18
  )
19
+
20
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response)
20
21
  end
21
22
 
22
23
  # Refund a ReferralCustomer Customer's wallet by a specified amount. Refund will be issued to the user's original payment method.
@@ -25,8 +26,9 @@ class EasyPost::Services::BetaReferralCustomer < EasyPost::Services::Service
25
26
  params = {
26
27
  refund_amount: amount,
27
28
  }
28
- @client.make_request(:post, 'referral_customers/refunds', EasyPost::Models::EasyPostObject, params, 'beta')
29
- # noinspection RubyMismatchedReturnType
29
+ response = @client.make_request(:post, 'referral_customers/refunds', params, 'beta')
30
+
31
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response)
30
32
  end
31
33
 
32
34
  # Refund a ReferralCustomer Customer's wallet for a specified payment log entry. Refund will be issued to the user's original payment method.
@@ -35,6 +37,8 @@ class EasyPost::Services::BetaReferralCustomer < EasyPost::Services::Service
35
37
  params = {
36
38
  payment_log_id: payment_log_id,
37
39
  }
38
- @client.make_request(:post, 'referral_customers/refunds', EasyPost::Models::EasyPostObject, params, 'beta')
40
+ response = @client.make_request(:post, 'referral_customers/refunds', params, 'beta')
41
+
42
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response)
39
43
  end
40
44
  end
@@ -44,7 +44,7 @@ class EasyPost::Services::Billing < EasyPost::Services::Service
44
44
  payment_id = payment_info[1]
45
45
 
46
46
  wrapped_params = { amount: amount }
47
- @client.make_request(:post, "#{endpoint}/#{payment_id}/charges", EasyPost::Models::EasyPostObject, wrapped_params)
47
+ @client.make_request(:post, "#{endpoint}/#{payment_id}/charges", wrapped_params)
48
48
 
49
49
  # Return true if succeeds, an error will be thrown if it fails
50
50
  true
@@ -65,11 +65,12 @@ class EasyPost::Services::Billing < EasyPost::Services::Service
65
65
  # Retrieve all payment methods.
66
66
  def retrieve_payment_methods
67
67
  response = @client.make_request(:get, '/v2/payment_methods')
68
+ payment_methods = EasyPost::InternalUtilities::Json.convert_json_to_object(response)
68
69
 
69
- if response['id'].nil?
70
+ if payment_methods['id'].nil?
70
71
  raise EasyPost::Errors::InvalidObjectError.new(EasyPost::Constants::NO_PAYMENT_METHODS)
71
72
  end
72
73
 
73
- response
74
+ payment_methods
74
75
  end
75
76
  end
@@ -14,24 +14,29 @@ class EasyPost::Services::CarrierAccount < EasyPost::Services::Service
14
14
  else
15
15
  'carrier_accounts'
16
16
  end
17
+ response = @client.make_request(:post, create_url, wrapped_params)
17
18
 
18
- @client.make_request(:post, create_url, MODEL_CLASS, wrapped_params)
19
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
19
20
  end
20
21
 
21
22
  # Retrieve a carrier account
22
23
  def retrieve(id)
23
- @client.make_request(:get, "carrier_accounts/#{id}", MODEL_CLASS)
24
+ response = @client.make_request(:get, "carrier_accounts/#{id}")
25
+
26
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
24
27
  end
25
28
 
26
29
  # Retrieve all carrier accounts
27
30
  def all(params = {})
28
- @client.make_request(:get, 'carrier_accounts', MODEL_CLASS, params)
31
+ get_all_helper('carrier_accounts', MODEL_CLASS, params)
29
32
  end
30
33
 
31
34
  # Update a carrier account
32
35
  def update(id, params = {})
33
36
  wrapped_params = { carrier_account: params }
34
- @client.make_request(:put, "carrier_accounts/#{id}", MODEL_CLASS, wrapped_params)
37
+ response = @client.make_request(:put, "carrier_accounts/#{id}", wrapped_params)
38
+
39
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
35
40
  end
36
41
 
37
42
  # Delete a carrier account
@@ -4,7 +4,6 @@ class EasyPost::Services::CarrierMetadata < EasyPost::Services::Service
4
4
  # Retrieve metadata for carrier(s).
5
5
  def retrieve(carriers = [], types = [])
6
6
  path = '/metadata/carriers?'
7
-
8
7
  params = {}
9
8
 
10
9
  if carriers.length.positive?
@@ -16,7 +15,8 @@ class EasyPost::Services::CarrierMetadata < EasyPost::Services::Service
16
15
  end
17
16
 
18
17
  path += URI.encode_www_form(params)
18
+ response = @client.make_request(:get, path, params)
19
19
 
20
- @client.make_request(:get, path, EasyPost::Models::EasyPostObject, params).carriers
20
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response).carriers
21
21
  end
22
22
  end
@@ -5,6 +5,8 @@ class EasyPost::Services::CarrierType < EasyPost::Services::Service
5
5
 
6
6
  # Retrieve all carrier types
7
7
  def all
8
- @client.make_request(:get, 'carrier_types', MODEL_CLASS)
8
+ response = @client.make_request(:get, 'carrier_types')
9
+
10
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
9
11
  end
10
12
  end
@@ -6,12 +6,15 @@ class EasyPost::Services::CustomsInfo < EasyPost::Services::Service
6
6
  # Create a CustomsInfo object
7
7
  def create(params)
8
8
  wrapped_params = { customs_info: params }
9
+ response = @client.make_request(:post, 'customs_infos', wrapped_params)
9
10
 
10
- @client.make_request(:post, 'customs_infos', MODEL_CLASS, wrapped_params)
11
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
11
12
  end
12
13
 
13
14
  # Retrieve a CustomsInfo object
14
15
  def retrieve(id)
15
- @client.make_request(:get, "customs_infos/#{id}", MODEL_CLASS)
16
+ response = @client.make_request(:get, "customs_infos/#{id}")
17
+
18
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
16
19
  end
17
20
  end
@@ -5,11 +5,15 @@ class EasyPost::Services::CustomsItem < EasyPost::Services::Service
5
5
 
6
6
  # Create a CustomsItem object
7
7
  def create(params)
8
- @client.make_request(:post, 'customs_items', MODEL_CLASS, params)
8
+ response = @client.make_request(:post, 'customs_items', params)
9
+
10
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
9
11
  end
10
12
 
11
13
  # Retrieve a CustomsItem object
12
14
  def retrieve(id)
13
- @client.make_request(:get, "customs_items/#{id}", MODEL_CLASS)
15
+ response = @client.make_request(:get, "customs_items/#{id}")
16
+
17
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
14
18
  end
15
19
  end
@@ -6,25 +6,31 @@ class EasyPost::Services::EndShipper < EasyPost::Services::Service
6
6
  # Create an EndShipper object.
7
7
  def create(params = {})
8
8
  wrapped_params = { address: params }
9
+ response = @client.make_request(:post, 'end_shippers', wrapped_params)
9
10
 
10
- @client.make_request(:post, 'end_shippers', MODEL_CLASS, wrapped_params)
11
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
11
12
  end
12
13
 
13
14
  # Retrieve an EndShipper object.
14
15
  def retrieve(id)
15
- @client.make_request(:get, "end_shippers/#{id}", MODEL_CLASS)
16
+ response = @client.make_request(:get, "end_shippers/#{id}")
17
+
18
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
16
19
  end
17
20
 
18
21
  # Retrieve all EndShipper objects.
19
22
  def all(params = {})
20
- @client.make_request(:get, 'end_shippers', MODEL_CLASS, params)
23
+ response = @client.make_request(:get, 'end_shippers', params)
24
+
25
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
21
26
  end
22
27
 
23
28
  # Updates an EndShipper object. This requires all parameters to be set.
24
29
  def update(id, params)
25
30
  wrapped_params = { address: params }
31
+ response = @client.make_request(:put, "end_shippers/#{id}", wrapped_params)
26
32
 
27
- @client.make_request(:put, "end_shippers/#{id}", MODEL_CLASS, wrapped_params)
33
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
28
34
  end
29
35
 
30
36
  # TODO: Add support for getting the next page of end shippers when the API supports it.
@@ -7,26 +7,39 @@ class EasyPost::Services::Event < EasyPost::Services::Service
7
7
 
8
8
  # Retrieve an Event object
9
9
  def retrieve(id)
10
- @client.make_request(:get, "events/#{id}", MODEL_CLASS)
10
+ response = @client.make_request(:get, "events/#{id}")
11
+
12
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
11
13
  end
12
14
 
13
15
  # Retrieve all Event objects
14
16
  def all(params = {})
15
- @client.make_request(:get, 'events', MODEL_CLASS, params)
17
+ filters = { key: 'events' }
18
+
19
+ get_all_helper('events', MODEL_CLASS, params, filters)
16
20
  end
17
21
 
18
22
  # Retrieve all payloads for an event.
19
23
  def retrieve_all_payloads(event_id)
20
- @client.make_request(:get, "events/#{event_id}/payloads", EasyPost::Models::Payload)
24
+ response = @client.make_request(:get, "events/#{event_id}/payloads")
25
+
26
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, EasyPost::Models::Payload)
21
27
  end
22
28
 
23
29
  # Retrieve a specific payload for an event.
24
30
  def retrieve_payload(event_id, payload_id)
25
- @client.make_request(:get, "events/#{event_id}/payloads/#{payload_id}", EasyPost::Models::Payload)
31
+ response = @client.make_request(:get, "events/#{event_id}/payloads/#{payload_id}")
32
+
33
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, EasyPost::Models::Payload)
26
34
  end
27
35
 
28
36
  # Get the next page of events.
29
37
  def get_next_page(collection, page_size = nil)
30
- get_next_page_helper(collection, collection.events, 'events', MODEL_CLASS, page_size)
38
+ raise EasyPost::Errors::EndOfPaginationError.new unless more_pages?(collection)
39
+
40
+ params = { before_id: collection.events.last.id }
41
+ params[:page_size] = page_size unless page_size.nil?
42
+
43
+ all(params)
31
44
  end
32
45
  end
@@ -6,21 +6,32 @@ class EasyPost::Services::Insurance < EasyPost::Services::Service
6
6
  # Create an Insurance object
7
7
  def create(params = {})
8
8
  wrapped_params = { insurance: params }
9
- @client.make_request(:post, 'insurances', MODEL_CLASS, wrapped_params)
9
+ response = @client.make_request(:post, 'insurances', wrapped_params)
10
+
11
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
10
12
  end
11
13
 
12
14
  # Retrieve an Insurance object
13
15
  def retrieve(id)
14
- @client.make_request(:get, "insurances/#{id}", MODEL_CLASS)
16
+ response = @client.make_request(:get, "insurances/#{id}")
17
+
18
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
15
19
  end
16
20
 
17
21
  # Retrieve all Insurance objects
18
22
  def all(params = {})
19
- @client.make_request(:get, 'insurances', MODEL_CLASS, params)
23
+ filters = { key: 'insurances' }
24
+
25
+ get_all_helper('insurances', MODEL_CLASS, params, filters)
20
26
  end
21
27
 
22
28
  # Get the next page of insurances.
23
29
  def get_next_page(collection, page_size = nil)
24
- get_next_page_helper(collection, collection.insurances, 'insurances', MODEL_CLASS, page_size)
30
+ raise EasyPost::Errors::EndOfPaginationError.new unless more_pages?(collection)
31
+
32
+ params = { before_id: collection.insurances.last.id }
33
+ params[:page_size] = page_size unless page_size.nil?
34
+
35
+ all(params)
25
36
  end
26
37
  end