Class: EasyPost::Resource
- Inherits:
-
EasyPostObject
- Object
- EasyPostObject
- EasyPost::Resource
- Defined in:
- lib/easypost/resource.rb
Overview
The Resource object is extended by each EasyPost object.
Direct Known Subclasses
Address, ApiKey, Batch, Brand, CarrierAccount, CarrierType, CustomsInfo, CustomsItem, Event, Insurance, Order, Parcel, Pickup, PickupRate, PostageLabel, Rate, Refund, Report, ScanForm, Shipment, TaxIdentifier, Tracker, User, Webhook
Instance Attribute Summary
Attributes inherited from EasyPostObject
#api_key, #name, #parent, #unsaved_values
Class Method Summary collapse
-
.all(filters = {}, api_key = nil) ⇒ Object
Retrieve a list of EasyPost objects.
-
.class_name ⇒ Object
The class name of an EasyPost object.
-
.create(params = {}, api_key = nil) ⇒ Object
Create an EasyPost object.
-
.retrieve(id, api_key = nil) ⇒ Object
Retrieve an EasyPost object.
-
.url ⇒ Object
The instance url of the Resource.
Instance Method Summary collapse
-
#delete ⇒ Object
Delete an EasyPost object.
-
#refresh ⇒ Object
Refresh an object from the API response.
-
#save ⇒ Object
Save (update) and EasyPost object.
-
#url ⇒ Object
The url of the Resource.
Methods inherited from EasyPostObject
#[], #[]=, #as_json, construct_from, #deconstruct_keys, #each, #id, #id=, #initialize, #inspect, #keys, #refresh_from, #to_hash, #to_json, #to_s, #values
Constructor Details
This class inherits a constructor from EasyPost::EasyPostObject
Class Method Details
.all(filters = {}, api_key = nil) ⇒ Object
Retrieve a list of EasyPost objects.
44 45 46 47 |
# File 'lib/easypost/resource.rb', line 44 def self.all(filters = {}, api_key = nil) response = EasyPost.make_request(:get, url, api_key, filters) EasyPost::Util.convert_to_easypost_object(response, api_key) end |
.class_name ⇒ Object
The class name of an EasyPost object.
6 7 8 9 10 |
# File 'lib/easypost/resource.rb', line 6 def self.class_name camel = name.split('::')[-1] snake = camel[0..0] + camel[1..-1].gsub(/([A-Z])/, '_\1') snake.downcase end |
.create(params = {}, api_key = nil) ⇒ Object
Create an EasyPost object.
57 58 59 60 61 62 |
# File 'lib/easypost/resource.rb', line 57 def self.create(params = {}, api_key = nil) wrapped_params = {} wrapped_params[class_name.to_sym] = params response = EasyPost.make_request(:post, url, api_key, wrapped_params) EasyPost::Util.convert_to_easypost_object(response, api_key) end |
.retrieve(id, api_key = nil) ⇒ Object
Retrieve an EasyPost object.
50 51 52 53 54 |
# File 'lib/easypost/resource.rb', line 50 def self.retrieve(id, api_key = nil) instance = new(id, api_key) instance.refresh instance end |
.url ⇒ Object
The instance url of the Resource.
13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/easypost/resource.rb', line 13 def self.url if class_name == 'resource' raise NotImplementedError.new( 'Resource is an abstract class. You should perform actions on its subclasses (Address, Shipment, etc.)', ) end if class_name[-1..-1] == 's' || class_name[-1..-1] == 'h' "/v2/#{CGI.escape(class_name.downcase)}es" else "/v2/#{CGI.escape(class_name.downcase)}s" end end |
Instance Method Details
#delete ⇒ Object
Delete an EasyPost object.
65 66 67 68 69 |
# File 'lib/easypost/resource.rb', line 65 def delete response = EasyPost.make_request(:delete, url, @api_key) refresh_from(response, api_key) self end |
#refresh ⇒ Object
Refresh an object from the API response.
37 38 39 40 41 |
# File 'lib/easypost/resource.rb', line 37 def refresh response = EasyPost.make_request(:get, url, @api_key, ) refresh_from(response, api_key) self end |
#save ⇒ Object
Save (update) and EasyPost object.
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/easypost/resource.rb', line 72 def save if @unsaved_values.length.positive? values = {} @unsaved_values.each { |k| values[k] = @values[k] } @unsaved_values.each do |key| # rubocop:disable Style/CombinableLoops value = values[key] if value.is_a?(EasyPost::EasyPostObject) values[key] = value.flatten_unsaved end end wrapped_params = { self.class.class_name => values } response = EasyPost.make_request(:put, url, @api_key, wrapped_params) refresh_from(response, api_key) end self end |
#url ⇒ Object
The url of the Resource.
28 29 30 31 32 33 34 |
# File 'lib/easypost/resource.rb', line 28 def url unless id raise EasyPost::Error.new("Could not determine which URL to request: #{self.class} instance has invalid ID: #{id.inspect}") end "#{self.class.url}/#{CGI.escape(id)}" end |