easypost 5.3.0 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
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