Class: EasyPost::Resource
Direct Known Subclasses
Address, Batch, CarrierAccount, Container, CustomsInfo, CustomsItem, Event, Insurance, Item, Order, Parcel, Pickup, PickupRate, PostageLabel, PrintJob, Printer, Rate, Refund, Report, ScanForm, Shipment, Tracker, User
Instance Attribute Summary
#api_key, #name, #parent, #unsaved_values
Class Method Summary
collapse
Instance Method Summary
collapse
#[], #[]=, #as_json, construct_from, #each, #id, #id=, #initialize, #inspect, #keys, #refresh_from, #to_hash, #to_json, #to_s, #values
Class Method Details
.all(filters = {}, api_key = nil) ⇒ Object
.class_name ⇒ Object
3
4
5
6
7
|
# File 'lib/easypost/resource.rb', line 3
def self.class_name
camel = self.name.split('::')[-1]
snake = camel[0..0] + camel[1..-1].gsub(/([A-Z])/, '_\1')
return snake.downcase
end
|
.create(params = {}, api_key = nil) ⇒ Object
44
45
46
47
48
49
|
# File 'lib/easypost/resource.rb', line 44
def self.create(params={}, api_key=nil)
wrapped_params = {}
wrapped_params[self.class_name().to_sym] = params
response, api_key = EasyPost.request(:post, self.url, api_key, wrapped_params)
return Util.convert_to_easypost_object(response, api_key)
end
|
.retrieve(id, api_key = nil) ⇒ Object
38
39
40
41
42
|
# File 'lib/easypost/resource.rb', line 38
def self.retrieve(id, api_key=nil)
instance = self.new(id, api_key)
instance.refresh
return instance
end
|
.url ⇒ Object
9
10
11
12
13
14
15
16
17
18
|
# File 'lib/easypost/resource.rb', line 9
def self.url
if self.class_name == 'resource'
raise NotImplementedError.new('Resource is an abstract class. You should perform actions on its subclasses (Address, Shipment, etc.)')
end
if(self.class_name[-1..-1] == 's' || self.class_name[-1..-1] == 'h')
return "/#{CGI.escape(self.class_name.downcase)}es"
else
return "/#{CGI.escape(class_name.downcase)}s"
end
end
|
Instance Method Details
#delete ⇒ Object
51
52
53
54
55
|
# File 'lib/easypost/resource.rb', line 51
def delete
response, api_key = EasyPost.request(:delete, url, @api_key)
refresh_from(response, api_key)
return self
end
|
#refresh ⇒ Object
27
28
29
30
31
|
# File 'lib/easypost/resource.rb', line 27
def refresh
response, api_key = EasyPost.request(:get, url, @api_key, @retrieve_options)
refresh_from(response, api_key)
return self
end
|
#save ⇒ Object
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
# File 'lib/easypost/resource.rb', line 57
def save
if @unsaved_values.length > 0
values = {}
@unsaved_values.each { |k| values[k] = @values[k] }
for key in @unsaved_values
value = values[key]
if value.is_a?(EasyPost::EasyPostObject)
values[key] = value.flatten_unsaved
end
end
wrapped_params = {self.class.class_name => values}
response, api_key = EasyPost.request(:put, url, @api_key, wrapped_params)
refresh_from(response, api_key)
end
return self
end
|
#url ⇒ Object
20
21
22
23
24
25
|
# File 'lib/easypost/resource.rb', line 20
def url
unless self.id
raise Error.new("Could not determine which URL to request: #{self.class} instance has invalid ID: #{self.id.inspect}")
end
return "#{self.class.url}/#{CGI.escape(id)}"
end
|