easypost 3.0.0 → 3.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +9 -0
  3. data/CHANGELOG +35 -0
  4. data/README.md +2 -1
  5. data/VERSION +1 -1
  6. data/easypost.gemspec +24 -20
  7. data/lib/easypost/address.rb +47 -47
  8. data/lib/easypost/batch.rb +34 -38
  9. data/lib/easypost/carrier_account.rb +4 -6
  10. data/lib/easypost/customs_info.rb +3 -2
  11. data/lib/easypost/customs_item.rb +3 -2
  12. data/lib/easypost/error.rb +25 -33
  13. data/lib/easypost/event.rb +3 -6
  14. data/lib/easypost/insurance.rb +1 -3
  15. data/lib/easypost/item.rb +4 -8
  16. data/lib/easypost/object.rb +111 -113
  17. data/lib/easypost/order.rb +20 -18
  18. data/lib/easypost/parcel.rb +1 -3
  19. data/lib/easypost/pickup.rb +19 -18
  20. data/lib/easypost/pickup_rate.rb +1 -3
  21. data/lib/easypost/postage_label.rb +1 -3
  22. data/lib/easypost/print_job.rb +1 -5
  23. data/lib/easypost/printer.rb +18 -22
  24. data/lib/easypost/rate.rb +1 -3
  25. data/lib/easypost/refund.rb +1 -3
  26. data/lib/easypost/report.rb +22 -24
  27. data/lib/easypost/resource.rb +58 -60
  28. data/lib/easypost/scan_form.rb +4 -6
  29. data/lib/easypost/shipment.rb +84 -92
  30. data/lib/easypost/tracker.rb +10 -12
  31. data/lib/easypost/user.rb +33 -37
  32. data/lib/easypost/util.rb +99 -136
  33. data/lib/easypost/webhook.rb +22 -21
  34. data/lib/easypost.rb +108 -118
  35. metadata +33 -61
  36. data/circle.yml +0 -3
  37. data/spec/address_spec.rb +0 -81
  38. data/spec/batch_spec.rb +0 -48
  39. data/spec/carrier_account_spec.rb +0 -121
  40. data/spec/insurance_spec.rb +0 -69
  41. data/spec/item_spec.rb +0 -105
  42. data/spec/order_spec.rb +0 -58
  43. data/spec/pickup_spec.rb +0 -83
  44. data/spec/report_spec.rb +0 -59
  45. data/spec/scan_form_spec.rb +0 -46
  46. data/spec/shipment_spec.rb +0 -144
  47. data/spec/spec_helper.rb +0 -10
  48. data/spec/support/constant.rb +0 -106
  49. data/spec/tracker_spec.rb +0 -94
  50. data/spec/user_spec.rb +0 -88
  51. data/spec/webhook_spec.rb +0 -75
@@ -1,124 +1,116 @@
1
- module EasyPost
2
- class Shipment < Resource
1
+ class EasyPost::Shipment < EasyPost::Resource
2
+ def get_rates(params={})
3
+ response = EasyPost.make_request(:get, url + '/rates', @api_key, params)
4
+ self.refresh_from(response, @api_key, true)
3
5
 
4
- def get_rates(params={})
5
- response, api_key = EasyPost.request(:get, url + '/rates', @api_key, params)
6
- self.refresh_from(response, @api_key, true)
6
+ return self
7
+ end
7
8
 
8
- return self
9
+ def buy(params={})
10
+ if params.instance_of?(EasyPost::Rate)
11
+ temp = params.clone
12
+ params = {}
13
+ params[:rate] = temp
9
14
  end
10
15
 
11
- def buy(params={})
12
- if params.instance_of?(EasyPost::Rate)
13
- temp = params.clone
14
- params = {}
15
- params[:rate] = temp
16
- end
16
+ response = EasyPost.make_request(:post, url + '/buy', @api_key, params)
17
+ self.refresh_from(response, @api_key, true)
17
18
 
18
- response, api_key = EasyPost.request(:post, url + '/buy', @api_key, params)
19
- self.refresh_from(response, @api_key, true)
19
+ return self
20
+ end
20
21
 
21
- return self
22
+ def insure(params={})
23
+ if params.is_a?(Integer) || params.is_a?(Float)
24
+ temp = params.clone
25
+ params = {}
26
+ params[:amount] = temp
22
27
  end
23
28
 
24
- def insure(params={})
25
- if params.is_a?(Integer) || params.is_a?(Float)
26
- temp = params.clone
27
- params = {}
28
- params[:amount] = temp
29
- end
29
+ response = EasyPost.make_request(:post, url + '/insure', @api_key, params)
30
+ self.refresh_from(response, @api_key, true)
30
31
 
31
- response, api_key = EasyPost.request(:post, url + '/insure', @api_key, params)
32
- self.refresh_from(response, @api_key, true)
32
+ return self
33
+ end
33
34
 
34
- return self
35
- end
35
+ def refund(params={})
36
+ response = EasyPost.make_request(:get, url + '/refund', @api_key, params)
37
+ self.refresh_from(response, @api_key, true)
36
38
 
37
- def refund(params={})
38
- response, api_key = EasyPost.request(:get, url + '/refund', @api_key, params)
39
- self.refresh_from(response, @api_key, true)
39
+ return self
40
+ end
40
41
 
41
- return self
42
+ def print(params={})
43
+ if params.instance_of?(EasyPost::Printer)
44
+ return params.print(self.postage_label)
42
45
  end
46
+ return false
47
+ end
43
48
 
44
- def print(params={})
45
- if params.instance_of?(EasyPost::Printer)
46
- return params.print(self.postage_label)
47
- end
48
- return false
49
+ def label(params={})
50
+ if params.is_a?(String)
51
+ temp = params.clone
52
+ params = {}
53
+ params[:file_format] = temp
49
54
  end
50
55
 
51
- def label(params={})
52
- if params.is_a?(String)
53
- temp = params.clone
54
- params = {}
55
- params[:file_format] = temp
56
- end
57
-
58
- response, api_key = EasyPost.request(:get, url + '/label', @api_key, params)
59
- self.refresh_from(response, @api_key, true)
56
+ response = EasyPost.make_request(:get, url + '/label', @api_key, params)
57
+ self.refresh_from(response, @api_key, true)
60
58
 
61
- return self
62
- end
59
+ return self
60
+ end
63
61
 
64
- def lowest_rate(carriers=[], services=[])
65
- lowest = nil
62
+ def lowest_rate(carriers=[], services=[])
63
+ lowest = nil
66
64
 
67
- self.get_rates unless self.rates
65
+ self.get_rates unless self.rates
68
66
 
69
- carriers = carriers.is_a?(String) ? carriers.split(',') : Array(carriers)
70
- carriers.map!(&:downcase)
71
- carriers.map!(&:strip)
67
+ carriers = EasyPost::Util.normalize_string_list(carriers)
72
68
 
73
- negative_carriers = []
74
- carriers_copy = carriers.clone
75
- carriers_copy.each do |carrier|
76
- if carrier[0,1] == '!'
77
- negative_carriers << carrier[1..-1]
78
- carriers.delete(carrier)
79
- end
69
+ negative_carriers = []
70
+ carriers_copy = carriers.clone
71
+ carriers_copy.each do |carrier|
72
+ if carrier[0,1] == '!'
73
+ negative_carriers << carrier[1..-1]
74
+ carriers.delete(carrier)
80
75
  end
76
+ end
81
77
 
82
- services = services.is_a?(String) ? services.split(',') : Array(services)
83
- services.map!(&:downcase)
84
- services.map!(&:strip)
85
-
86
- negative_services = []
87
- services_copy = services.clone
88
- services_copy.each do |service|
89
- if service[0,1] == '!'
90
- negative_services << service[1..-1]
91
- services.delete(service)
92
- end
78
+ services = EasyPost::Util.normalize_string_list(services)
79
+
80
+ negative_services = []
81
+ services_copy = services.clone
82
+ services_copy.each do |service|
83
+ if service[0,1] == '!'
84
+ negative_services << service[1..-1]
85
+ services.delete(service)
93
86
  end
87
+ end
88
+
89
+ self.rates.each do |k|
94
90
 
95
- self.rates.each do |k|
96
-
97
- rate_carrier = k.carrier.downcase
98
- if carriers.size() > 0 && !carriers.include?(rate_carrier)
99
- next
100
- end
101
- if negative_carriers.size() > 0 && negative_carriers.include?(rate_carrier)
102
- next
103
- end
104
-
105
- rate_service = k.service.downcase
106
- if services.size() > 0 && !services.include?(rate_service)
107
- next
108
- end
109
- if negative_services.size() > 0 && negative_services.include?(rate_service)
110
- next
111
- end
112
-
113
- if lowest == nil || k.rate.to_f < lowest.rate.to_f
114
- lowest = k
115
- end
91
+ rate_carrier = k.carrier.downcase
92
+ if carriers.size() > 0 && !carriers.include?(rate_carrier)
93
+ next
94
+ end
95
+ if negative_carriers.size() > 0 && negative_carriers.include?(rate_carrier)
96
+ next
116
97
  end
117
98
 
118
- raise Error.new('No rates found.') if lowest == nil
99
+ rate_service = k.service.downcase
100
+ if services.size() > 0 && !services.include?(rate_service)
101
+ next
102
+ end
103
+ if negative_services.size() > 0 && negative_services.include?(rate_service)
104
+ next
105
+ end
119
106
 
120
- return lowest
107
+ if lowest == nil || k.rate.to_f < lowest.rate.to_f
108
+ lowest = k
109
+ end
121
110
  end
122
111
 
112
+ raise EasyPost::Error.new('No rates found.') if lowest == nil
113
+
114
+ return lowest
123
115
  end
124
116
  end
@@ -1,15 +1,13 @@
1
- module EasyPost
2
- class Tracker < Resource
3
- def self.create_list(params={}, api_key=nil)
4
- url = self.url + '/create_list'
5
- response, api_key = EasyPost.request(:post, url, api_key, params)
6
- return true
7
- end
1
+ class EasyPost::Tracker < EasyPost::Resource
2
+ def self.create_list(params={}, api_key=nil)
3
+ url = self.url + '/create_list'
4
+ response = EasyPost.make_request(:post, url, api_key, params)
5
+ return true
6
+ end
8
7
 
9
- def self.all_updated(params={}, api_key=nil)
10
- url = self.url + '/all_updated'
11
- response, api_key = EasyPost.request(:get, url, api_key, params)
12
- return Util.convert_to_easypost_object(response, api_key)
13
- end
8
+ def self.all_updated(params={}, api_key=nil)
9
+ url = self.url + '/all_updated'
10
+ response = EasyPost.make_request(:get, url, api_key, params)
11
+ return EasyPost::Util.convert_to_easypost_object(response, api_key)
14
12
  end
15
13
  end
data/lib/easypost/user.rb CHANGED
@@ -1,49 +1,45 @@
1
- module EasyPost
2
- class User < Resource
3
- def self.create(params={}, api_key=nil)
4
- wrapped_params = {}
5
- wrapped_params[self.class_name().to_sym] = params
6
- response, api_key = EasyPost.request(:post, self.url, api_key, wrapped_params, {}, false)
7
- return Util.convert_to_easypost_object(response, api_key)
8
- end
1
+ class EasyPost::User < EasyPost::Resource
2
+ def self.create(params={}, api_key=nil)
3
+ response = EasyPost.make_request(:post, self.url, api_key, {self.class_name.to_sym => params})
4
+ return EasyPost::Util.convert_to_easypost_object(response, api_key)
5
+ end
9
6
 
10
- def save
11
- if @unsaved_values.length > 0
12
- values = {}
13
- @unsaved_values.each { |k| values[k] = @values[k] }
7
+ def save
8
+ if @unsaved_values.length > 0
9
+ values = {}
10
+ @unsaved_values.each { |k| values[k] = @values[k] }
14
11
 
15
- wrapped_params = {user: values}
12
+ wrapped_params = {user: values}
16
13
 
17
- response, api_key = EasyPost.request(:put, url, @api_key, wrapped_params)
18
- refresh_from(response, api_key)
19
- end
20
- return self
14
+ response = EasyPost.make_request(:put, url, @api_key, wrapped_params)
15
+ refresh_from(response, api_key)
21
16
  end
17
+ return self
18
+ end
22
19
 
23
- def self.retrieve_me
24
- self.all
25
- end
20
+ def self.retrieve_me
21
+ self.all
22
+ end
26
23
 
27
- def self.all_api_keys
28
- response, api_key = EasyPost.request(:get, "/api_keys", @api_key)
29
- return Util.convert_to_easypost_object(response, api_key)
30
- end
24
+ def self.all_api_keys
25
+ response = EasyPost.make_request(:get, "/api_keys", @api_key)
26
+ return EasyPost::Util.convert_to_easypost_object(response, api_key)
27
+ end
28
+
29
+ def api_keys
30
+ api_keys = EasyPost::User.all_api_keys
31
31
 
32
- def api_keys
33
- api_keys = EasyPost::User.all_api_keys
34
-
35
- if api_keys.id == self.id
36
- my_api_keys = api_keys.keys
37
- else
38
- for child in api_keys.children
39
- if child.id == self.id
40
- my_api_keys = child.keys
41
- break
42
- end
32
+ if api_keys.id == self.id
33
+ my_api_keys = api_keys.keys
34
+ else
35
+ for child in api_keys.children
36
+ if child.id == self.id
37
+ my_api_keys = child.keys
38
+ break
43
39
  end
44
40
  end
45
-
46
- my_api_keys
47
41
  end
42
+
43
+ my_api_keys
48
44
  end
49
45
  end
data/lib/easypost/util.rb CHANGED
@@ -1,147 +1,110 @@
1
- module EasyPost
2
- module Util
3
- def self.objects_to_ids(obj)
4
- case obj
5
- when Resource
6
- return {:id => obj.id}
7
- when Hash
8
- result = {}
9
- obj.each { |k, v| result[k] = objects_to_ids(v) unless v.nil? }
10
- return result
11
- when Array
12
- return obj.map { |v| objects_to_ids(v) }
13
- else
14
- return obj
15
- end
1
+ module EasyPost::Util
2
+ def self.objects_to_ids(obj)
3
+ case obj
4
+ when EasyPost::Resource
5
+ return {:id => obj.id}
6
+ when Hash
7
+ result = {}
8
+ obj.each { |k, v| result[k] = objects_to_ids(v) unless v.nil? }
9
+ return result
10
+ when Array
11
+ return obj.map { |v| objects_to_ids(v) }
12
+ else
13
+ return obj
16
14
  end
15
+ end
17
16
 
18
- def self.convert_to_easypost_object(response, api_key, parent=nil, name=nil)
19
- types = {
20
- 'Address' => Address,
21
- 'ScanForm' => ScanForm,
22
- 'CustomsItem' => CustomsItem,
23
- 'CustomsInfo' => CustomsInfo,
24
- 'Parcel' => Parcel,
25
- 'Shipment' => Shipment,
26
- 'Rate' => Rate,
27
- 'Refund' => Refund,
28
- 'Event' => Event,
29
- 'Batch' => Batch,
30
- 'Tracker' => Tracker,
31
- 'Item' => Item,
32
- 'Insurance' => Insurance,
33
- 'Order' => Order,
34
- 'Pickup' => Pickup,
35
- 'PickupRate' => PickupRate,
36
- 'PostageLabel' => PostageLabel,
37
- 'Printer' => Printer,
38
- 'PrintJob' => PrintJob,
39
- 'CarrierAccount' => CarrierAccount,
40
- 'User' => User,
41
- 'Report' => Report,
42
- 'ShipmentReport' => Report,
43
- 'PaymentLogReport' => Report,
44
- 'TrackerReport' => Report,
45
- 'Webhook' => Webhook
46
- }
47
-
48
- prefixes = {
49
- 'adr' => Address,
50
- 'sf' => ScanForm,
51
- 'cstitem' => CustomsItem,
52
- 'cstinfo' => CustomsInfo,
53
- 'prcl' => Parcel,
54
- 'shp' => Shipment,
55
- 'rate' => Rate,
56
- 'rfnd' => Refund,
57
- 'evt' => Event,
58
- 'batch' => Batch,
59
- 'trk' => Tracker,
60
- 'item' => Item,
61
- 'ins' => Insurance,
62
- 'order' => Order,
63
- 'pickup' => Pickup,
64
- 'pickuprate' => PickupRate,
65
- 'pl' => PostageLabel,
66
- 'printer' => Printer,
67
- 'printjob' => PrintJob,
68
- 'ca' => CarrierAccount,
69
- 'user' => User,
70
- 'shprep' => Report,
71
- 'plrep' => Report,
72
- 'trkrep' => Report,
73
- 'hook' => Webhook
74
- }
75
-
76
- case response
77
- when Array
78
- return response.map { |i| convert_to_easypost_object(i, api_key, parent) }
79
- when Hash
80
- if cls_name = response[:object]
81
- cls = types[cls_name]
82
- elsif response[:id]
83
- if response[:id].index('_').nil?
84
- cls = EasyPostObject
85
- elsif cls_prefix = response[:id][0..response[:id].index('_')]
86
- cls = prefixes[cls_prefix[0..-2]]
87
- end
88
- elsif response['id']
89
- if response['id'].index('_').nil?
90
- cls = EasyPostObject
91
- elsif cls_prefix = response['id'][0..response['id'].index('_')]
92
- cls = prefixes[cls_prefix[0..-2]]
93
- end
94
- end
95
-
96
- cls ||= EasyPostObject
97
- return cls.construct_from(response, api_key, parent, name)
98
- else
99
- return response
100
- end
101
- end
17
+ def self.normalize_string_list(lst)
18
+ lst = lst.is_a?(String) ? lst.split(',') : Array(lst)
19
+ lst.map(&:to_s).map(&:downcase).map(&:strip)
20
+ end
102
21
 
103
- def self.symbolize_names(obj)
104
- case obj
105
- when Hash
106
- result = {}
107
- obj.each do |k, v|
108
- k = (k.to_sym rescue k) || k
109
- obj[k] = symbolize_names(v)
110
- end
111
- return result
112
- when Array
113
- return obj.map { |v| symbolize_names(v) }
114
- else
115
- return obj
116
- end
117
- end
22
+ def self.convert_to_easypost_object(response, api_key, parent=nil, name=nil)
23
+ types = {
24
+ 'Address' => EasyPost::Address,
25
+ 'ScanForm' => EasyPost::ScanForm,
26
+ 'CustomsItem' => EasyPost::CustomsItem,
27
+ 'CustomsInfo' => EasyPost::CustomsInfo,
28
+ 'Parcel' => EasyPost::Parcel,
29
+ 'Shipment' => EasyPost::Shipment,
30
+ 'Rate' => EasyPost::Rate,
31
+ 'Refund' => EasyPost::Refund,
32
+ 'Event' => EasyPost::Event,
33
+ 'Batch' => EasyPost::Batch,
34
+ 'Tracker' => EasyPost::Tracker,
35
+ 'Item' => EasyPost::Item,
36
+ 'Insurance' => EasyPost::Insurance,
37
+ 'Order' => EasyPost::Order,
38
+ 'Pickup' => EasyPost::Pickup,
39
+ 'PickupRate' => EasyPost::PickupRate,
40
+ 'PostageLabel' => EasyPost::PostageLabel,
41
+ 'Printer' => EasyPost::Printer,
42
+ 'PrintJob' => EasyPost::PrintJob,
43
+ 'CarrierAccount' => EasyPost::CarrierAccount,
44
+ 'User' => EasyPost::User,
45
+ 'Report' => EasyPost::Report,
46
+ 'ShipmentReport' => EasyPost::Report,
47
+ 'PaymentLogReport' => EasyPost::Report,
48
+ 'TrackerReport' => EasyPost::Report,
49
+ 'RefundReport' => EasyPost::Report,
50
+ 'ShipmentInvoiceReport' => EasyPost::Report,
51
+ 'Webhook' => EasyPost::Webhook
52
+ }
118
53
 
119
- def self.url_encode(key)
120
- URI.escape(key.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
121
- end
54
+ prefixes = {
55
+ 'adr' => EasyPost::Address,
56
+ 'sf' => EasyPost::ScanForm,
57
+ 'cstitem' => EasyPost::CustomsItem,
58
+ 'cstinfo' => EasyPost::CustomsInfo,
59
+ 'prcl' => EasyPost::Parcel,
60
+ 'shp' => EasyPost::Shipment,
61
+ 'rate' => EasyPost::Rate,
62
+ 'rfnd' => EasyPost::Refund,
63
+ 'evt' => EasyPost::Event,
64
+ 'batch' => EasyPost::Batch,
65
+ 'trk' => EasyPost::Tracker,
66
+ 'item' => EasyPost::Item,
67
+ 'ins' => EasyPost::Insurance,
68
+ 'order' => EasyPost::Order,
69
+ 'pickup' => EasyPost::Pickup,
70
+ 'pickuprate' => EasyPost::PickupRate,
71
+ 'pl' => EasyPost::PostageLabel,
72
+ 'printer' => EasyPost::Printer,
73
+ 'printjob' => EasyPost::PrintJob,
74
+ 'ca' => EasyPost::CarrierAccount,
75
+ 'user' => EasyPost::User,
76
+ 'shprep' => EasyPost::Report,
77
+ 'plrep' => EasyPost::Report,
78
+ 'trkrep' => EasyPost::Report,
79
+ 'refrep' => EasyPost::Report,
80
+ 'shpinvrep' => EasyPost::Report,
81
+ 'hook' => EasyPost::Webhook
82
+ }
122
83
 
123
- def self.flatten_params(params, parent_key=nil)
124
- result = []
125
- if params.is_a?(Hash)
126
- params.each do |k, v|
127
- calculated_key = parent_key ? "#{parent_key}[#{url_encode(k)}]" : url_encode(k)
128
- if v.is_a?(Hash) or v.is_a?(Array)
129
- result += flatten_params(v, calculated_key)
130
- else
131
- result << [calculated_key, v]
132
- end
84
+ case response
85
+ when Array
86
+ return response.map { |i| convert_to_easypost_object(i, api_key, parent) }
87
+ when Hash
88
+ if cls_name = response[:object]
89
+ cls = types[cls_name]
90
+ elsif response[:id]
91
+ if response[:id].index('_').nil?
92
+ cls = EasyPost::EasyPostObject
93
+ elsif cls_prefix = response[:id][0..response[:id].index('_')]
94
+ cls = prefixes[cls_prefix[0..-2]]
133
95
  end
134
- elsif params.is_a?(Array)
135
- params.each_with_index do |v, i|
136
- calculated_key = parent_key ? "#{parent_key}[#{i}]" : i
137
- if v.is_a?(Hash) or v.is_a?(Array)
138
- result += flatten_params(v, calculated_key)
139
- else
140
- result << [calculated_key, v]
141
- end
96
+ elsif response['id']
97
+ if response['id'].index('_').nil?
98
+ cls = EasyPost::EasyPostObject
99
+ elsif cls_prefix = response['id'][0..response['id'].index('_')]
100
+ cls = prefixes[cls_prefix[0..-2]]
142
101
  end
143
102
  end
144
- return result
103
+
104
+ cls ||= EasyPost::EasyPostObject
105
+ return cls.construct_from(response, api_key, parent, name)
106
+ else
107
+ return response
145
108
  end
146
109
  end
147
110
  end
@@ -1,28 +1,29 @@
1
- module EasyPost
2
- class Webhook < Resource
3
- def update(params={})
4
- unless self.id
5
- raise Error.new("Could not determine which URL to request: #{self.class} instance has invalid ID: #{self.id.inspect}")
6
- end
7
- instance_url = "#{self.class.url}/#{CGI.escape(id)}"
8
-
9
- response, api_key = EasyPost.request(:put, instance_url, @api_key, params)
10
- self.refresh_from(response, api_key, true)
11
-
12
- return self
1
+ class EasyPost::Webhook < EasyPost::Resource
2
+ def update(params={})
3
+ # NOTE: This method is redefined here since the "url" method conflicts
4
+ # with the objects field
5
+ unless self.id
6
+ raise EasyPost::Error.new("Could not determine which URL to request: #{self.class} instance has invalid ID: #{self.id.inspect}")
13
7
  end
8
+ instance_url = "#{self.class.url}/#{CGI.escape(id)}"
14
9
 
15
- def delete
16
- # Note: This method is redefined here since the "url" method conflicts with the objects field
17
- unless self.id
18
- raise Error.new("Could not determine which URL to request: #{self.class} instance has invalid ID: #{self.id.inspect}")
19
- end
20
- instance_url = "#{self.class.url}/#{CGI.escape(id)}"
10
+ response = EasyPost.make_request(:put, instance_url, @api_key, params)
11
+ self.refresh_from(response, api_key, true)
21
12
 
22
- response, api_key = EasyPost.request(:delete, instance_url, @api_key)
23
- refresh_from(response, api_key)
13
+ return self
14
+ end
24
15
 
25
- return self
16
+ def delete
17
+ # NOTE: This method is redefined here since the "url" method conflicts
18
+ # with the objects field
19
+ unless self.id
20
+ raise EasyPost::Error.new("Could not determine which URL to request: #{self.class} instance has invalid ID: #{self.id.inspect}")
26
21
  end
22
+ instance_url = "#{self.class.url}/#{CGI.escape(id)}"
23
+
24
+ response = EasyPost.make_request(:delete, instance_url, @api_key)
25
+ refresh_from(response, api_key)
26
+
27
+ return self
27
28
  end
28
29
  end