class EasyPost::Resource
Public Class Methods
all(filters = {}, api_key = nil)
click to toggle source
Retrieve a list of EasyPost
objects.
# File lib/easypost/resource.rb, line 46 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()
click to toggle source
The class name of an EasyPost
object.
# File lib/easypost/resource.rb, line 8 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)
click to toggle source
Create an EasyPost
object.
# File lib/easypost/resource.rb, line 72 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
each(filters = {}, api_key = EasyPost.api_key, &block)
click to toggle source
Filter all results based on criteria.
# File lib/easypost/resource.rb, line 52 def self.each(filters = {}, api_key = EasyPost.api_key, &block) return to_enum(:each, filters, api_key) unless block_given? loop do page, has_more = all(filters, api_key).values last = page.each(&block).last break if page.empty? || !has_more filters[:before_id] = last.id end end
retrieve(id, api_key = nil)
click to toggle source
Retrieve an EasyPost
object.
# File lib/easypost/resource.rb, line 65 def self.retrieve(id, api_key = nil) instance = new(id, api_key) instance.refresh instance end
url()
click to toggle source
The instance url of the Resource
.
# File lib/easypost/resource.rb, line 15 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
Public Instance Methods
delete()
click to toggle source
Delete an EasyPost
object.
# File lib/easypost/resource.rb, line 80 def delete response = EasyPost.make_request(:delete, url, @api_key) refresh_from(response, api_key) self end
refresh()
click to toggle source
Refresh an object from the API response.
# File lib/easypost/resource.rb, line 39 def refresh response = EasyPost.make_request(:get, url, @api_key, @retrieve_options) refresh_from(response, api_key) self end
save()
click to toggle source
Save (update) and EasyPost
object.
# File lib/easypost/resource.rb, line 87 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(:patch, url, @api_key, wrapped_params) refresh_from(response, api_key) end self end
url()
click to toggle source
The url of the Resource
.
# File lib/easypost/resource.rb, line 30 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