Class: Latitude::API::APIObject
Direct Known Subclasses
Objects::Billing, Objects::Currency, Objects::Limits, Objects::Project, Objects::Role, Objects::Stats, Objects::Tag, Objects::Team, Objects::User, Resources::BillingUsage::Period, Resources::ElasticIP::Location, Resources::ElasticIP::Region, Resources::ElasticIP::Server, Resources::Event::Author, Resources::Event::Target, Resources::Firewall::Assignment::Firewall, Resources::Firewall::Assignment::Server, Resources::Firewall::Rule, Resources::IP::Assignment, Resources::IP::Elastic, Resources::IP::Location, Resources::IP::Region, Resources::KubernetesCluster::ControlPlane, Resources::KubernetesCluster::Node, Resources::KubernetesCluster::Step, Resources::KubernetesCluster::Worker, Resources::Plan::BRL, Resources::Plan::Bandwidth::Brl, Resources::Plan::Bandwidth::Pricing, Resources::Plan::Bandwidth::Usd, Resources::Plan::Cpu, Resources::Plan::Drive, Resources::Plan::Gpu, Resources::Plan::Location, Resources::Plan::Memory, Resources::Plan::Nic, Resources::Plan::OperatingSystem::Feature, Resources::Plan::Pricing, Resources::Plan::Region, Resources::Plan::Spec, Resources::Plan::Storage::BRL, Resources::Plan::Storage::Pricing, Resources::Plan::Storage::Region, Resources::Plan::Storage::USD, Resources::Plan::USD, Resources::Plan::VirtualMachine::BRL, Resources::Plan::VirtualMachine::Disk, Resources::Plan::VirtualMachine::Location, Resources::Plan::VirtualMachine::Nic, Resources::Plan::VirtualMachine::Pricing, Resources::Plan::VirtualMachine::Region, Resources::Plan::VirtualMachine::Size, Resources::Plan::VirtualMachine::Spec, Resources::Plan::VirtualMachine::USD, Resources::Plan::VirtualMachine::Vcpu, Resources::Region::Country, Resources::Server::Distro, Resources::Server::Feature, Resources::Server::Interface, Resources::Server::OperatingSystem, Resources::Server::Plan, Resources::Server::Region, Resources::Server::Site, Resources::Server::Spec, Resources::Storage::Object::Region, Resources::Storage::Volume::Initiator, Resources::Team::User, Resources::Traffic::Data, Resources::Traffic::Quota::QuotaInMbp, Resources::Traffic::Quota::QuotaInTb, Resources::Traffic::Quota::QuotaPerProject, Resources::Traffic::Quota::QuotaPerRegion, Resources::Traffic::Region, Resources::UserTeam::User, Resources::VPNSession::Region, Resources::VPNSession::Site, Resources::VirtualMachine::Credential, Resources::VirtualMachine::Distro, Resources::VirtualMachine::Feature, Resources::VirtualMachine::OperatingSystem, Resources::VirtualMachine::Plan, Resources::VirtualMachine::Spec, Resources::VirtualNetwork::Assignment::Server, Resources::VirtualNetwork::Region, Resources::VirtualNetwork::Site
Constant Summary
collapse
- RESERVED =
i[attributes id type meta values].freeze
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
attribute, attribute_specs
#attribute_spec, #read_attribute, #wrap_attribute
Constructor Details
#initialize(hash = {}) ⇒ APIObject
Returns a new instance of APIObject.
24
25
26
27
28
|
# File 'lib/latitude/api/api_object.rb', line 24
def initialize(hash = {})
@raw = hash || {}
@values = {}
@raw.each { |k, v| @values[k.to_s] = wrap_attribute(k, v) }
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &blk) ⇒ Object
82
83
84
85
86
87
88
|
# File 'lib/latitude/api/api_object.rb', line 82
def method_missing(name, *args, &blk)
key = normalize_method_name(name)
return @values[key] if @values.key?(key) && args.empty?
return !!@values[key.chomp("?")] if key.end_with?("?") && @values.key?(key.chomp("?")) && args.empty?
super
end
|
Instance Attribute Details
#raw ⇒ Object
Returns the value of attribute raw.
11
12
13
|
# File 'lib/latitude/api/api_object.rb', line 11
def raw
@raw
end
|
Class Method Details
.wrap(value) ⇒ Object
13
14
15
16
17
18
19
20
21
22
|
# File 'lib/latitude/api/api_object.rb', line 13
def self.wrap(value)
case value
when Hash
new(value)
when Array
value.map { |v| wrap(v) }
else
value
end
end
|
Instance Method Details
#==(other) ⇒ Object
Also known as:
eql?
58
59
60
61
62
|
# File 'lib/latitude/api/api_object.rb', line 58
def ==(other)
return false unless other.is_a?(self.class)
to_h == other.to_h
end
|
#[](key) ⇒ Object
30
31
32
|
# File 'lib/latitude/api/api_object.rb', line 30
def [](key)
@values[key.to_s]
end
|
#as_json(*_) ⇒ Object
54
55
56
|
# File 'lib/latitude/api/api_object.rb', line 54
def as_json(*_)
to_h
end
|
#each(&blk) ⇒ Object
42
43
44
|
# File 'lib/latitude/api/api_object.rb', line 42
def each(&blk)
@values.each(&blk)
end
|
#hash ⇒ Object
66
67
68
|
# File 'lib/latitude/api/api_object.rb', line 66
def hash
to_h.hash
end
|
#inspect ⇒ Object
70
71
72
|
# File 'lib/latitude/api/api_object.rb', line 70
def inspect
"#<#{self.class.name} #{to_h.inspect}>"
end
|
#key?(key) ⇒ Boolean
34
35
36
|
# File 'lib/latitude/api/api_object.rb', line 34
def key?(key)
@values.key?(key.to_s)
end
|
#keys ⇒ Object
38
39
40
|
# File 'lib/latitude/api/api_object.rb', line 38
def keys
@values.keys
end
|
#respond_to_missing?(name, include_private = false) ⇒ Boolean
74
75
76
77
78
79
80
|
# File 'lib/latitude/api/api_object.rb', line 74
def respond_to_missing?(name, include_private = false)
key = normalize_method_name(name)
return true if @values.key?(key)
return true if key.end_with?("?") && @values.key?(key.chomp("?"))
super
end
|
#to_h ⇒ Object
Also known as:
to_hash
46
47
48
49
50
|
# File 'lib/latitude/api/api_object.rb', line 46
def to_h
@values.each_with_object({}) do |(k, v), out|
out[k] = unwrap(v)
end
end
|