Class: UnifiProtect::CameraCollection
- Inherits:
-
Object
- Object
- UnifiProtect::CameraCollection
show all
- Extended by:
- Forwardable
- Defined in:
- lib/unifi_protect/camera_collection.rb
Constant Summary
collapse
- FILTERS =
{
adopting: :isAdopting,
adopted: :isAdopted,
provisioned: :isProvisioned,
attempting_to_connect: :isAttemptingToConnect,
managed: :isManaged,
updating: :isUpdating,
connected: :isConnected,
recording: :isRecording,
rebooting: :isRebooting,
deleting: :isDeleting,
dark: :isDark,
motion_detected: :isMotionDetected,
}.freeze
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of CameraCollection.
28
29
30
|
# File 'lib/unifi_protect/camera_collection.rb', line 28
def initialize(cameras = [])
@cameras = cameras
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *args) ⇒ Object
51
52
53
54
55
|
# File 'lib/unifi_protect/camera_collection.rb', line 51
def method_missing(method_name, *args)
return filter(method_name, *args) if FILTERS.include?(method_name)
super
end
|
Instance Attribute Details
#cameras ⇒ Object
Returns the value of attribute cameras.
9
10
11
|
# File 'lib/unifi_protect/camera_collection.rb', line 9
def cameras
@cameras
end
|
Instance Method Details
#fetch(**attrs) ⇒ Object
67
68
69
|
# File 'lib/unifi_protect/camera_collection.rb', line 67
def fetch(**attrs)
match(**attrs).first
end
|
#filter(name, value = true) ⇒ Object
71
72
73
74
75
76
|
# File 'lib/unifi_protect/camera_collection.rb', line 71
def filter(name, value = true)
return CameraCollection.new if @cameras.empty?
raise 'unknown filter' unless FILTERS.include?(name.to_sym)
CameraCollection.new(@cameras.select { |c| c.send(FILTERS.fetch(name.to_sym)) == value })
end
|
#match(**attrs) ⇒ Object
57
58
59
60
61
62
63
64
65
|
# File 'lib/unifi_protect/camera_collection.rb', line 57
def match(**attrs)
return CameraCollection.new(cameras) if attrs.empty?
CameraCollection.new(
@cameras.select do |camera|
attrs.any? { |name, matcher| camera.match(name, matcher) }
end
)
end
|
#respond_to_missing?(method_name, include_private = false) ⇒ Boolean
45
46
47
48
49
|
# File 'lib/unifi_protect/camera_collection.rb', line 45
def respond_to_missing?(method_name, include_private = false)
return true if FILTERS.include?(method_name)
super
end
|