class Shippo::API::Resource
Attributes
object[RW]
Public Class Methods
from(values)
click to toggle source
Creates a possibly recursive chain (map of lists, etc) of Resource
instances based on whether each value is a scalar, array or a hash.
# File lib/shippo/api/resource.rb, line 25 def self.from(values) # recursive on arrays if values.is_a?(Array) values.map { |list| from(list) } elsif values.respond_to?(:keys) # a Hash or a Hash derivative new(values) else values end end
new(*args)
click to toggle source
As a Hashie::Mash subclass, Resource
can initialize from another hash
Calls superclass method
# File lib/shippo/api/resource.rb, line 49 def initialize(*args) if args.first.is_a?(Integer) or (args.first.is_a?(String) && args.first =~ /^[0-9A-Fa-f]+$/) self.id = args.first elsif args.first.respond_to?(:keys) h = ApiHash.new(args.first) self.deep_merge!(h) self.object = ApiObject.create_object(self) transformers.each do |transformer| transformer.new(self).transform end else super(*args) end end
short_name(name = self.name)
click to toggle source
# File lib/shippo/api/resource.rb, line 36 def self.short_name(name = self.name) name.split('::')[-1] end
Public Instance Methods
inspect()
click to toggle source
# File lib/shippo/api/resource.rb, line 65 def inspect "#<#{self.class.short_name}:0x#{self.object_id.to_s(16)}#{id.nil? ? '' : "[id=#{id}]"}#{to_hash.inspect}->#{object.inspect}" end
refresh()
click to toggle source
# File lib/shippo/api/resource.rb, line 78 def refresh response = Shippo::API.get(url) self.from(response) self end
success?()
click to toggle source
# File lib/shippo/api/resource.rb, line 84 def success? self.object && self.object.status && self.object.status.eql?(Shippo::API::Category::Status::SUCCESS) end
to_s()
click to toggle source
# File lib/shippo/api/resource.rb, line 69 def to_s self.class.short_name + self.to_hash.to_s + '->' + self.object.to_s end
url()
click to toggle source
# File lib/shippo/api/resource.rb, line 73 def url raise Shippo::Exceptions::MissingDataError.new("#{self.class} has no object_id") unless id "#{self.class.url}/#{CGI.escape(id)}" end
valid?()
click to toggle source
# File lib/shippo/api/resource.rb, line 88 def valid? self.object && self.object.state && self.object.state.eql?(Shippo::API::Category::State::VALID) end