Class: MixinBot::Models::ApiEnvelope
- Inherits:
-
SimpleDelegator
- Object
- SimpleDelegator
- MixinBot::Models::ApiEnvelope
show all
- Defined in:
- lib/mixin_bot/models/api_envelope.rb
Overview
Wraps a raw Mixin API JSON object so callers can use both:
Instance Method Summary
collapse
Instance Method Details
#[](key) ⇒ Object
11
12
13
14
15
16
17
18
19
20
|
# File 'lib/mixin_bot/models/api_envelope.rb', line 11
def [](key)
k = key.is_a?(Symbol) ? key.to_s : key
inner = __getobj__
return inner[k] if inner.key?(k)
data = inner['data']
return data[k] if data.is_a?(Hash) && data.key?(k)
nil
end
|
#dig(*keys) ⇒ Object
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/mixin_bot/models/api_envelope.rb', line 22
def dig(*keys)
return nil if keys.empty?
k0 = keys[0]
k0 = k0.to_s if k0.is_a?(Symbol)
inner = __getobj__
if inner.key?(k0)
v = inner[k0]
return v if keys.size == 1
return v.dig(*keys[1..]) if v.respond_to?(:dig)
end
data = inner['data']
return nil unless data.is_a?(Hash) && data.key?(k0)
v = data[k0]
return v if keys.size == 1
v.respond_to?(:dig) ? v.dig(*keys[1..]) : nil
end
|
#key?(key) ⇒ Boolean
Also known as:
include?, has_key?
45
46
47
48
49
|
# File 'lib/mixin_bot/models/api_envelope.rb', line 45
def key?(key)
k = key.is_a?(Symbol) ? key.to_s : key
inner = __getobj__
inner.key?(k) || (inner['data'].is_a?(Hash) && inner['data'].key?(k))
end
|
#to_h ⇒ Object
62
63
64
|
# File 'lib/mixin_bot/models/api_envelope.rb', line 62
def to_h
__getobj__
end
|
#with_indifferent_access ⇒ Object
54
55
56
57
58
59
60
|
# File 'lib/mixin_bot/models/api_envelope.rb', line 54
def with_indifferent_access
inner = __getobj__
base = inner.dup
d = base['data']
merged = d.is_a?(Hash) ? base.merge(d) : base
merged.with_indifferent_access
end
|