easypost 5.3.0 → 6.0.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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -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/models/base.rb +3 -1
  7. data/lib/easypost/models.rb +0 -1
  8. data/lib/easypost/services/address.rb +22 -7
  9. data/lib/easypost/services/api_key.rb +3 -1
  10. data/lib/easypost/services/base.rb +10 -13
  11. data/lib/easypost/services/batch.rb +23 -15
  12. data/lib/easypost/services/beta_rate.rb +2 -1
  13. data/lib/easypost/services/beta_referral_customer.rb +9 -5
  14. data/lib/easypost/services/billing.rb +4 -3
  15. data/lib/easypost/services/carrier_account.rb +9 -4
  16. data/lib/easypost/services/carrier_metadata.rb +2 -2
  17. data/lib/easypost/services/carrier_type.rb +3 -1
  18. data/lib/easypost/services/customs_info.rb +5 -2
  19. data/lib/easypost/services/customs_item.rb +6 -2
  20. data/lib/easypost/services/end_shipper.rb +10 -4
  21. data/lib/easypost/services/event.rb +18 -5
  22. data/lib/easypost/services/insurance.rb +15 -4
  23. data/lib/easypost/services/order.rb +12 -4
  24. data/lib/easypost/services/parcel.rb +6 -2
  25. data/lib/easypost/services/pickup.rb +21 -6
  26. data/lib/easypost/services/rate.rb +3 -1
  27. data/lib/easypost/services/referral_customer.rb +22 -6
  28. data/lib/easypost/services/refund.rb +15 -4
  29. data/lib/easypost/services/report.rb +18 -6
  30. data/lib/easypost/services/scan_form.rb +15 -4
  31. data/lib/easypost/services/shipment.rb +41 -26
  32. data/lib/easypost/services/tracker.rb +21 -9
  33. data/lib/easypost/services/user.rb +17 -6
  34. data/lib/easypost/services/webhook.rb +12 -4
  35. data/lib/easypost/utilities/constants.rb +1 -0
  36. data/lib/easypost/utilities/json.rb +7 -1
  37. data/lib/easypost/utilities/static_mapper.rb +0 -1
  38. metadata +2 -3
  39. data/lib/easypost/models/carbon_offset.rb +0 -5
@@ -6,17 +6,23 @@ class EasyPost::Services::Pickup < EasyPost::Services::Service
6
6
  # Create a Pickup object
7
7
  def create(params = {})
8
8
  wrapped_params = { pickup: params }
9
- @client.make_request(:post, 'pickups', MODEL_CLASS, wrapped_params)
9
+ response = @client.make_request(:post, 'pickups', wrapped_params)
10
+
11
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
10
12
  end
11
13
 
12
14
  # Retrieve a Pickup object
13
15
  def retrieve(id)
14
- @client.make_request(:get, "pickups/#{id}", MODEL_CLASS)
16
+ response = @client.make_request(:get, "pickups/#{id}")
17
+
18
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
15
19
  end
16
20
 
17
21
  # Retrieve all Pickup objects
18
22
  def all(params = {})
19
- @client.make_request(:get, 'pickups', MODEL_CLASS, params)
23
+ filters = { key: 'pickups' }
24
+
25
+ get_all_helper('pickups', MODEL_CLASS, params, filters)
20
26
  end
21
27
 
22
28
  # Buy a Pickup
@@ -25,16 +31,25 @@ class EasyPost::Services::Pickup < EasyPost::Services::Service
25
31
  params = { carrier: params[:carrier], service: params[:service] }
26
32
  end
27
33
 
28
- @client.make_request(:post, "pickups/#{id}/buy", MODEL_CLASS, params)
34
+ response = @client.make_request(:post, "pickups/#{id}/buy", params)
35
+
36
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
29
37
  end
30
38
 
31
39
  # Cancel a Pickup
32
40
  def cancel(id, params = {})
33
- @client.make_request(:post, "pickups/#{id}/cancel", MODEL_CLASS, params)
41
+ response = @client.make_request(:post, "pickups/#{id}/cancel", params)
42
+
43
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
34
44
  end
35
45
 
36
46
  # Get next page of Pickups
37
47
  def get_next_page(collection, page_size = nil)
38
- get_next_page_helper(collection, collection.pickups, 'pickups', MODEL_CLASS, page_size)
48
+ raise EasyPost::Errors::EndOfPaginationError.new unless more_pages?(collection)
49
+
50
+ params = { before_id: collection.pickups.last.id }
51
+ params[:page_size] = page_size unless page_size.nil?
52
+
53
+ all(params)
39
54
  end
40
55
  end
@@ -3,6 +3,8 @@
3
3
  class EasyPost::Services::Rate < EasyPost::Services::Service
4
4
  # Retrieve a Rate
5
5
  def retrieve(id)
6
- @client.make_request(:get, "rates/#{id}", EasyPost::Models::Rate)
6
+ response = @client.make_request(:get, "rates/#{id}")
7
+
8
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, EasyPost::Models::Rate)
7
9
  end
8
10
  end
@@ -5,7 +5,9 @@ class EasyPost::Services::ReferralCustomer < EasyPost::Services::Service
5
5
 
6
6
  # Create a referral customer. This function requires the Partner User's API key.
7
7
  def create(params = {})
8
- @client.make_request(:post, 'referral_customers', MODEL_CLASS, { user: params })
8
+ response = @client.make_request(:post, 'referral_customers', { user: params })
9
+
10
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
9
11
  end
10
12
 
11
13
  # Update a referral customer. This function requires the Partner User's API key.
@@ -15,7 +17,7 @@ class EasyPost::Services::ReferralCustomer < EasyPost::Services::Service
15
17
  email: email,
16
18
  },
17
19
  }
18
- @client.make_request(:put, "referral_customers/#{user_id}", MODEL_CLASS, wrapped_params)
20
+ @client.make_request(:put, "referral_customers/#{user_id}", wrapped_params)
19
21
 
20
22
  # return true if API succeeds, else an error is throw if it fails.
21
23
  true
@@ -23,12 +25,19 @@ class EasyPost::Services::ReferralCustomer < EasyPost::Services::Service
23
25
 
24
26
  # Retrieve a list of referral customers. This function requires the Partner User's API key.
25
27
  def all(params = {})
26
- @client.make_request(:get, 'referral_customers', MODEL_CLASS, params)
28
+ filters = { key: 'referral_customers' }
29
+
30
+ get_all_helper('referral_customers', MODEL_CLASS, params, filters)
27
31
  end
28
32
 
29
33
  # Get the next page of referral customers.
30
34
  def get_next_page(collection, page_size = nil)
31
- get_next_page_helper(collection, collection.referral_customers, 'referral_customers', MODEL_CLASS, page_size)
35
+ raise EasyPost::Errors::EndOfPaginationError.new unless more_pages?(collection)
36
+
37
+ params = { before_id: collection.referral_customers.last.id }
38
+ params[:page_size] = page_size unless page_size.nil?
39
+
40
+ all(params)
32
41
  end
33
42
 
34
43
  # Add credit card to a referral customer. This function requires the ReferralCustomer Customer's API key.
@@ -54,7 +63,7 @@ class EasyPost::Services::ReferralCustomer < EasyPost::Services::Service
54
63
 
55
64
  # Retrieve EasyPost's Stripe public API key.
56
65
  def retrieve_easypost_stripe_api_key
57
- response = @client.make_request(:get, 'partners/stripe_public_key', EasyPost::Models::EasyPostObject, nil, 'beta')
66
+ response = @client.make_request(:get, 'partners/stripe_public_key', nil, 'beta')
58
67
  response['public_key']
59
68
  end
60
69
 
@@ -98,6 +107,13 @@ class EasyPost::Services::ReferralCustomer < EasyPost::Services::Service
98
107
  },
99
108
  }
100
109
  referral_client = EasyPost::Client.new(api_key: referral_api_key)
101
- referral_client.make_request(:post, 'credit_cards', EasyPost::Models::EasyPostObject, wrapped_params, 'beta')
110
+ response = referral_client.make_request(
111
+ :post,
112
+ 'credit_cards',
113
+ wrapped_params,
114
+ 'beta',
115
+ )
116
+
117
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response)
102
118
  end
103
119
  end
@@ -6,21 +6,32 @@ class EasyPost::Services::Refund < EasyPost::Services::Service
6
6
  # Create a Refund object
7
7
  def create(params = {})
8
8
  wrapped_params = { refund: params }
9
- @client.make_request(:post, 'refunds', MODEL_CLASS, wrapped_params)
9
+ response = @client.make_request(:post, 'refunds', wrapped_params)
10
+
11
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
10
12
  end
11
13
 
12
14
  # Retrieve a Refund object
13
15
  def retrieve(id)
14
- @client.make_request(:get, "refunds/#{id}", MODEL_CLASS)
16
+ response = @client.make_request(:get, "refunds/#{id}")
17
+
18
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
15
19
  end
16
20
 
17
21
  # Retrieve all Refund objects
18
22
  def all(params = {})
19
- @client.make_request(:get, 'refunds', MODEL_CLASS, params)
23
+ filters = { key: 'refunds' }
24
+
25
+ get_all_helper('refunds', MODEL_CLASS, params, filters)
20
26
  end
21
27
 
22
28
  # Get the next page of refunds
23
29
  def get_next_page(collection, page_size = nil)
24
- get_next_page_helper(collection, collection.refunds, 'refunds', MODEL_CLASS, page_size)
30
+ raise EasyPost::Errors::EndOfPaginationError.new unless more_pages?(collection)
31
+
32
+ params = { before_id: collection.refunds.last.id }
33
+ params[:page_size] = page_size unless page_size.nil?
34
+
35
+ all(params)
25
36
  end
26
37
  end
@@ -11,13 +11,16 @@ class EasyPost::Services::Report < EasyPost::Services::Service
11
11
 
12
12
  type = params.delete(:type)
13
13
  url = "reports/#{type}"
14
+ response = @client.make_request(:post, url, params)
14
15
 
15
- @client.make_request(:post, url, MODEL_CLASS, params)
16
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
16
17
  end
17
18
 
18
19
  # Retrieve a Report
19
20
  def retrieve(id)
20
- @client.make_request(:get, "reports/#{id}", MODEL_CLASS)
21
+ response = @client.make_request(:get, "reports/#{id}")
22
+
23
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
21
24
  end
22
25
 
23
26
  # Retrieve all Report objects
@@ -27,16 +30,25 @@ class EasyPost::Services::Report < EasyPost::Services::Service
27
30
  end
28
31
 
29
32
  type = params.delete(:type)
33
+ filters = {
34
+ key: 'reports',
35
+ type: type,
36
+ }
30
37
  url = "reports/#{type}"
31
-
32
- response = @client.make_request(:get, url, MODEL_CLASS, params)
38
+ response = get_all_helper(url, MODEL_CLASS, params, filters)
33
39
  response.define_singleton_method(:type) { type }
40
+
34
41
  response
35
42
  end
36
43
 
37
44
  # Get next page of Report objects
38
45
  def get_next_page(collection, page_size = nil)
39
- url = "reports/#{collection.type}"
40
- get_next_page_helper(collection, collection.reports, url, MODEL_CLASS, page_size)
46
+ raise EasyPost::Errors::EndOfPaginationError.new unless more_pages?(collection)
47
+
48
+ params = { before_id: collection.reports.last.id }
49
+ params[:page_size] = page_size unless page_size.nil?
50
+ params.merge!(collection[EasyPost::InternalUtilities::Constants::FILTERS_KEY]).delete(:key)
51
+
52
+ all(params)
41
53
  end
42
54
  end
@@ -5,21 +5,32 @@ class EasyPost::Services::ScanForm < EasyPost::Services::Service
5
5
 
6
6
  # Create a ScanForm.
7
7
  def create(params = {})
8
- @client.make_request(:post, 'scan_forms', MODEL_CLASS, params)
8
+ response = @client.make_request(:post, 'scan_forms', params)
9
+
10
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
9
11
  end
10
12
 
11
13
  # Retrieve a ScanForm.
12
14
  def retrieve(id)
13
- @client.make_request(:get, "scan_forms/#{id}", MODEL_CLASS)
15
+ response = @client.make_request(:get, "scan_forms/#{id}")
16
+
17
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
14
18
  end
15
19
 
16
20
  # Retrieve a list of ScanForms
17
21
  def all(params = {})
18
- @client.make_request(:get, 'scan_forms', MODEL_CLASS, params)
22
+ filters = { key: 'scan_forms' }
23
+
24
+ get_all_helper('scan_forms', MODEL_CLASS, params, filters)
19
25
  end
20
26
 
21
27
  # Get the next page of ScanForms.
22
28
  def get_next_page(collection, page_size = nil)
23
- get_next_page_helper(collection, collection.scan_forms, 'scan_forms', MODEL_CLASS, page_size)
29
+ raise EasyPost::Errors::EndOfPaginationError.new unless more_pages?(collection)
30
+
31
+ params = { before_id: collection.scan_forms.last.id }
32
+ params[:page_size] = page_size unless page_size.nil?
33
+
34
+ all(params)
24
35
  end
25
36
  end
@@ -6,76 +6,89 @@ class EasyPost::Services::Shipment < EasyPost::Services::Service
6
6
  MODEL_CLASS = EasyPost::Models::Shipment
7
7
 
8
8
  # Create a Shipment.
9
- def create(params = {}, with_carbon_offset = false)
10
- wrapped_params = {
11
- shipment: params,
12
- carbon_offset: with_carbon_offset,
13
- }
9
+ def create(params = {})
10
+ wrapped_params = { shipment: params }
11
+ response = @client.make_request(:post, 'shipments', wrapped_params)
14
12
 
15
- @client.make_request(:post, 'shipments', MODEL_CLASS, wrapped_params)
13
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
16
14
  end
17
15
 
18
16
  # Retrieve a Shipment.
19
17
  def retrieve(id)
20
- @client.make_request(:get, "shipments/#{id}", MODEL_CLASS)
18
+ response = @client.make_request(:get, "shipments/#{id}")
19
+
20
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
21
21
  end
22
22
 
23
23
  # Retrieve a list of Shipments
24
24
  def all(params = {})
25
- response = @client.make_request(:get, 'shipments', MODEL_CLASS, params)
26
- response.define_singleton_method(:purchased) { params[:purchased] }
27
- response.define_singleton_method(:include_children) { params[:include_children] }
28
- response
25
+ filters = {
26
+ key: 'shipments',
27
+ purchased: params[:purchased],
28
+ include_children: params[:include_children],
29
+ }
30
+
31
+ get_all_helper('shipments', MODEL_CLASS, params, filters)
29
32
  end
30
33
 
31
34
  # Get the next page of shipments.
32
35
  def get_next_page(collection, page_size = nil)
33
- get_next_page_helper(collection, collection.shipments, 'shipments', MODEL_CLASS, page_size)
36
+ raise EasyPost::Errors::EndOfPaginationError.new unless more_pages?(collection)
37
+
38
+ params = { before_id: collection.shipments.last.id }
39
+ params[:page_size] = page_size unless page_size.nil?
40
+ params.merge!(collection[EasyPost::InternalUtilities::Constants::FILTERS_KEY]).delete(:key)
41
+
42
+ all(params)
34
43
  end
35
44
 
36
45
  # Regenerate the rates of a Shipment.
37
- def regenerate_rates(id, with_carbon_offset = false)
38
- params = { carbon_offset: with_carbon_offset }
46
+ def regenerate_rates(id)
47
+ response = @client.make_request(:post, "shipments/#{id}/rerate")
39
48
 
40
- @client.make_request(:post, "shipments/#{id}/rerate", MODEL_CLASS, params)
49
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
41
50
  end
42
51
 
43
52
  # Get the SmartRates of a Shipment.
44
53
  def get_smart_rates(id)
45
- @client.make_request(:get, "shipments/#{id}/smartrate", MODEL_CLASS).result || []
54
+ response = @client.make_request(:get, "shipments/#{id}/smartrate")
55
+
56
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS).result || []
46
57
  end
47
58
 
48
59
  # Buy a Shipment.
49
- def buy(id, params = {}, with_carbon_offset = false, end_shipper_id = nil)
60
+ def buy(id, params = {}, end_shipper_id = nil)
50
61
  if params.instance_of?(EasyPost::Models::Rate)
51
62
  params = { rate: params.clone }
52
63
  end
53
64
 
54
- params[:carbon_offset] = params[:with_carbon_offset] || with_carbon_offset
55
- params.delete(:with_carbon_offset)
56
-
57
65
  params[:end_shipper_id] = end_shipper_id if end_shipper_id
66
+ response = @client.make_request(:post, "shipments/#{id}/buy", params)
58
67
 
59
- @client.make_request(:post, "shipments/#{id}/buy", MODEL_CLASS, params)
68
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
60
69
  end
61
70
 
62
71
  # Insure a Shipment.
63
72
  def insure(id, params = {})
64
73
  params = { amount: params } if params.is_a?(Integer) || params.is_a?(Float)
74
+ response = @client.make_request(:post, "shipments/#{id}/insure", params)
65
75
 
66
- @client.make_request(:post, "shipments/#{id}/insure", MODEL_CLASS, params)
76
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
67
77
  end
68
78
 
69
79
  # Refund a Shipment.
70
80
  def refund(id, params = {})
71
- @client.make_request(:post, "shipments/#{id}/refund", MODEL_CLASS, params)
81
+ response = @client.make_request(:post, "shipments/#{id}/refund", params)
82
+
83
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
72
84
  end
73
85
 
74
86
  # Convert the label format of a Shipment.
75
87
  def label(id, params = {})
76
88
  params = { file_format: params } if params.is_a?(String)
89
+ response = @client.make_request(:get, "shipments/#{id}/label", params)
77
90
 
78
- @client.make_request(:get, "shipments/#{id}/label", MODEL_CLASS, params)
91
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
79
92
  end
80
93
 
81
94
  # Get the lowest SmartRate of a Shipment.
@@ -92,15 +105,17 @@ class EasyPost::Services::Shipment < EasyPost::Services::Service
92
105
  wrapped_params = {
93
106
  form: merged_params,
94
107
  }
108
+ response = @client.make_request(:post, "shipments/#{id}/forms", wrapped_params)
95
109
 
96
- @client.make_request(:post, "shipments/#{id}/forms", MODEL_CLASS, wrapped_params)
110
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
97
111
  end
98
112
 
99
113
  # Retrieves the estimated delivery date of each Rate via SmartRate.
100
114
  def retrieve_estimated_delivery_date(id, planned_ship_date)
101
115
  url = "shipments/#{id}/smartrate/delivery_date"
102
116
  params = { planned_ship_date: planned_ship_date }
117
+ response = @client.make_request(:get, url, params)
103
118
 
104
- @client.make_request(:get, url, MODEL_CLASS, params).rates
119
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS).rates
105
120
  end
106
121
  end
@@ -6,33 +6,45 @@ class EasyPost::Services::Tracker < EasyPost::Services::Service
6
6
  # Create a Tracker
7
7
  def create(params = {})
8
8
  wrapped_params = { tracker: params }
9
+ response = @client.make_request(:post, 'trackers', wrapped_params)
9
10
 
10
- @client.make_request(:post, 'trackers', MODEL_CLASS, wrapped_params)
11
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
11
12
  end
12
13
 
13
14
  # Retrieve a Tracker
14
15
  def retrieve(id)
15
- @client.make_request(:get, "trackers/#{id}", MODEL_CLASS)
16
+ response = @client.make_request(:get, "trackers/#{id}")
17
+
18
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
16
19
  end
17
20
 
18
21
  # Retrieve a list of Trackers
19
- def all(params)
20
- response = @client.make_request(:get, 'trackers', MODEL_CLASS, params)
21
- response.define_singleton_method(:tracking_code) { params[:tracking_code] }
22
- response.define_singleton_method(:carrier) { params[:carrier] }
23
- response
22
+ def all(params = {})
23
+ filters = {
24
+ key: 'trackers',
25
+ tracking_code: params[:tracking_code],
26
+ carrier: params[:carrier],
27
+ }
28
+
29
+ get_all_helper('trackers', MODEL_CLASS, params, filters)
24
30
  end
25
31
 
26
32
  # Create multiple Tracker objects in bulk.
27
33
  def create_list(params = {})
28
34
  wrapped_params = { 'trackers' => params }
29
35
 
30
- @client.make_request(:post, 'trackers/create_list', MODEL_CLASS, wrapped_params)
36
+ @client.make_request(:post, 'trackers/create_list', wrapped_params)
31
37
  true # This endpoint does not return a response so we return true here instead
32
38
  end
33
39
 
34
40
  # Get the next page of trackers.
35
41
  def get_next_page(collection, page_size = nil)
36
- get_next_page_helper(collection, collection.trackers, 'trackers', MODEL_CLASS, page_size)
42
+ raise EasyPost::Errors::EndOfPaginationError.new unless more_pages?(collection)
43
+
44
+ params = { before_id: collection.trackers.last.id }
45
+ params[:page_size] = page_size unless page_size.nil?
46
+ params.merge!(collection[EasyPost::InternalUtilities::Constants::FILTERS_KEY]).delete(:key)
47
+
48
+ all(params)
37
49
  end
38
50
  end
@@ -5,22 +5,30 @@ class EasyPost::Services::User < EasyPost::Services::Service
5
5
 
6
6
  # Create a child User.
7
7
  def create(params = {})
8
- @client.make_request(:post, 'users', MODEL_CLASS, params)
8
+ response = @client.make_request(:post, 'users', params)
9
+
10
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
9
11
  end
10
12
 
11
13
  # Retrieve a user
12
14
  def retrieve(id)
13
- @client.make_request(:get, "users/#{id}", MODEL_CLASS)
15
+ response = @client.make_request(:get, "users/#{id}")
16
+
17
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
14
18
  end
15
19
 
16
20
  # Retrieve the authenticated User.
17
21
  def retrieve_me
18
- @client.make_request(:get, 'users', MODEL_CLASS)
22
+ response = @client.make_request(:get, 'users')
23
+
24
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
19
25
  end
20
26
 
21
27
  # Update a User
22
28
  def update(id, params = {})
23
- @client.make_request(:put, "users/#{id}", MODEL_CLASS, params)
29
+ response = @client.make_request(:put, "users/#{id}", params)
30
+
31
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
24
32
  end
25
33
 
26
34
  # Delete a User
@@ -34,7 +42,9 @@ class EasyPost::Services::User < EasyPost::Services::Service
34
42
  # Retrieve a list of all ApiKey objects.
35
43
  def all_api_keys
36
44
  warn '[DEPRECATION] `all_api_keys` is deprecated. Please use `all` in the `api_key` service instead.'
37
- @client.make_request(:get, 'api_keys', EasyPost::Models::ApiKey)
45
+ response = @client.make_request(:get, 'api_keys')
46
+
47
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, EasyPost::Models::ApiKey)
38
48
  end
39
49
 
40
50
  # Retrieve a list of ApiKey objects (works for the authenticated user or a child user).
@@ -64,7 +74,8 @@ Please use `retrieve_api_keys_for_user` in the `api_key` service instead.'
64
74
  # Update the Brand of a User.
65
75
  def update_brand(id, params = {})
66
76
  wrapped_params = { brand: params }
77
+ response = @client.make_request(:get, "users/#{id}/brand", wrapped_params)
67
78
 
68
- @client.make_request(:get, "users/#{id}/brand", EasyPost::Models::Brand, wrapped_params)
79
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, EasyPost::Models::Brand)
69
80
  end
70
81
  end
@@ -6,22 +6,30 @@ class EasyPost::Services::Webhook < EasyPost::Services::Service
6
6
  # Create a Webhook.
7
7
  def create(params = {})
8
8
  wrapped_params = { webhook: params }
9
- @client.make_request(:post, 'webhooks', MODEL_CLASS, wrapped_params)
9
+ response = @client.make_request(:post, 'webhooks', wrapped_params)
10
+
11
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
10
12
  end
11
13
 
12
14
  # Retrieve a Webhook
13
15
  def retrieve(id)
14
- @client.make_request(:get, "webhooks/#{id}", MODEL_CLASS)
16
+ response = @client.make_request(:get, "webhooks/#{id}")
17
+
18
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
15
19
  end
16
20
 
17
21
  # Retrieve a list of Webhooks
18
22
  def all(params = {})
19
- @client.make_request(:get, 'webhooks', MODEL_CLASS, params)
23
+ filters = { 'key' => 'webhooks' }
24
+
25
+ get_all_helper('webhooks', MODEL_CLASS, params, filters)
20
26
  end
21
27
 
22
28
  # Update a Webhook.
23
29
  def update(id, params = {})
24
- @client.make_request(:patch, "webhooks/#{id}", MODEL_CLASS, params)
30
+ response = @client.make_request(:patch, "webhooks/#{id}", params)
31
+
32
+ EasyPost::InternalUtilities::Json.convert_json_to_object(response, MODEL_CLASS)
25
33
  end
26
34
 
27
35
  # Delete a Webhook.
@@ -2,4 +2,5 @@
2
2
 
3
3
  module EasyPost::InternalUtilities::Constants
4
4
  API_VERSION = 'v2'
5
+ FILTERS_KEY = '_filters'
5
6
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module EasyPost::InternalUtilities::Json
4
4
  def self.convert_json_to_object(data, cls = EasyPost::Models::EasyPostObject)
5
- data = JSON.parse(data) if data.is_a?(String) # Parse JSON to a Hash or Array if it's a string
5
+ data = parse_json(data) if data.is_a?(String) # Parse JSON to a Hash or Array if it's a string
6
6
  if data.is_a?(Array)
7
7
  # Deserialize array data into an array of objects
8
8
  data.map { |i| convert_json_to_object(i, cls) }
@@ -13,6 +13,12 @@ module EasyPost::InternalUtilities::Json
13
13
  # data is neither a Hash nor Array (but somehow was parsed as JSON? This should never happen)
14
14
  data
15
15
  end
16
+ end
17
+
18
+ def self.parse_json(data)
19
+ return if data.nil?
20
+
21
+ JSON.parse(data)
16
22
  rescue JSON::ParserError
17
23
  data # Not JSON, return the original data (used mostly when dealing with final values like strings, booleans, etc.)
18
24
  end
@@ -42,7 +42,6 @@ module EasyPost::InternalUtilities::StaticMapper
42
42
  'BankAccount' => EasyPost::Models::PaymentMethod,
43
43
  'Batch' => EasyPost::Models::Batch,
44
44
  'Brand' => EasyPost::Models::Brand,
45
- 'CarbonOffset' => EasyPost::Models::CarbonOffset,
46
45
  'CarrierAccount' => EasyPost::Models::CarrierAccount,
47
46
  'CreditCard' => EasyPost::Models::PaymentMethod,
48
47
  'CustomsInfo' => EasyPost::Models::CustomsInfo,
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: 5.3.0
4
+ version: 6.0.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: 2023-10-11 00:00:00.000000000 Z
11
+ date: 2023-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: brakeman
@@ -274,7 +274,6 @@ files:
274
274
  - lib/easypost/models/base.rb
275
275
  - lib/easypost/models/batch.rb
276
276
  - lib/easypost/models/brand.rb
277
- - lib/easypost/models/carbon_offset.rb
278
277
  - lib/easypost/models/carrier_account.rb
279
278
  - lib/easypost/models/carrier_type.rb
280
279
  - lib/easypost/models/customs_info.rb
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # The CarbonOffset object is a summary of carbon offset data for a given rate, including grams, price and currency
4
- class EasyPost::Models::CarbonOffset < EasyPost::Models::EasyPostObject
5
- end