Class: Shippo::API::Resource
Direct Known Subclasses
Shippo::Address, Batch, CarrierAccount, CustomsDeclaration, CustomsItem, Manifest, Parcel, Rate, Refund, Shipment, Track, Transaction
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
#transformers
included
included
Constructor Details
#initialize(*args) ⇒ Resource
As a Hashie::Mash subclass, Resource can initialize from another hash
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# 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
|
Instance Attribute Details
#object ⇒ Object
Returns the value of attribute object.
21
22
23
|
# File 'lib/shippo/api/resource.rb', line 21
def object
@object
end
|
Class Method Details
.from(values) ⇒ Object
Creates a possibly recursive chain (map of lists, etc) of Resource instances based on whether each value is a scalar, array or a hash.
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/shippo/api/resource.rb', line 25
def self.from(values)
if values.is_a?(Array)
values.map { |list| from(list) }
elsif values.respond_to?(:keys) new(values)
else
values
end
end
|
.short_name(name = self.name) ⇒ Object
36
37
38
|
# File 'lib/shippo/api/resource.rb', line 36
def self.short_name(name = self.name)
name.split('::')[-1]
end
|
Instance Method Details
#inspect ⇒ Object
65
66
67
|
# 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 ⇒ Object
78
79
80
81
82
|
# File 'lib/shippo/api/resource.rb', line 78
def refresh
response = Shippo::API.get(url)
self.from(response)
self
end
|
#success? ⇒ Boolean
84
85
86
|
# 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 ⇒ Object
69
70
71
|
# 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 ⇒ Object
73
74
75
76
|
# 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? ⇒ Boolean
88
89
90
|
# 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
|