Class: RubyHome::AccessoryInfo

Inherits:
Object
  • Object
show all
Includes:
Persistable
Defined in:
lib/ruby_home/accessory_info.rb

Constant Summary collapse

USERNAME =
-'Pair-Setup'

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Persistable

included, #reload, #save

Constructor Details

#initialize(device_id: nil, paired_clients: [], password: nil, signature_key: nil) ⇒ AccessoryInfo

Returns a new instance of AccessoryInfo.



19
20
21
22
23
24
# File 'lib/ruby_home/accessory_info.rb', line 19

def initialize(device_id: nil, paired_clients: [], password: nil, signature_key: nil)
  @device_id = device_id
  @paired_clients = paired_clients
  @password = password
  @signature_key = signature_key
end

Class Method Details

.instanceObject



9
10
11
# File 'lib/ruby_home/accessory_info.rb', line 9

def self.instance
  @@_instance ||= persisted || create
end

.reloadObject



13
14
15
# File 'lib/ruby_home/accessory_info.rb', line 13

def self.reload
  @@_instance = nil
end

Instance Method Details

#add_paired_client(admin: false, identifier:, public_key:) ⇒ Object



47
48
49
50
# File 'lib/ruby_home/accessory_info.rb', line 47

def add_paired_client(admin: false, identifier: , public_key: )
  @paired_clients << { admin: admin, identifier: identifier, public_key: public_key }
  save
end

#device_idObject



39
40
41
# File 'lib/ruby_home/accessory_info.rb', line 39

def device_id
  @device_id ||= DeviceID.generate
end

#paired?Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/ruby_home/accessory_info.rb', line 57

def paired?
  paired_clients.any?
end

#paired_clientsObject



43
44
45
# File 'lib/ruby_home/accessory_info.rb', line 43

def paired_clients
  @paired_clients ||= []
end

#passwordObject



30
31
32
# File 'lib/ruby_home/accessory_info.rb', line 30

def password
  @password ||= Password.generate
end

#password=(new_password) ⇒ Object



34
35
36
37
# File 'lib/ruby_home/accessory_info.rb', line 34

def password=(new_password)
  @password = new_password
  save
end

#remove_paired_client(identifier) ⇒ Object



52
53
54
55
# File 'lib/ruby_home/accessory_info.rb', line 52

def remove_paired_client(identifier)
  paired_clients.delete_if { |h| h[:identifier] == identifier }
  save
end

#signing_keyObject



61
62
63
# File 'lib/ruby_home/accessory_info.rb', line 61

def signing_key
  @signing_key ||= RbNaCl::Signatures::Ed25519::SigningKey.new([signature_key].pack('H*'))
end

#usernameObject



26
27
28
# File 'lib/ruby_home/accessory_info.rb', line 26

def username
  USERNAME
end