class GetToWork::Keychain
Public Class Methods
absolute_service_name(relative_name)
click to toggle source
# File lib/get_to_work/keychain.rb, line 19 def self.absolute_service_name(relative_name) "#{KEYCHAIN_PREFIX}::#{relative_name}" end
find(service:)
click to toggle source
# File lib/get_to_work/keychain.rb, line 13 def self.find(service:) ::Keychain.generic_passwords.where( service: absolute_service_name(service) ).all end
Public Instance Methods
update(opts = {})
click to toggle source
# File lib/get_to_work/keychain.rb, line 5 def update(opts = {}) relative_service_name = opts[:service] @absolute_service_name = self.class.absolute_service_name(relative_service_name) update_or_create_keychain_item(opts) end
Private Instance Methods
create_keychain_item(opts = {})
click to toggle source
# File lib/get_to_work/keychain.rb, line 39 def create_keychain_item(opts = {}) relative_service_name = opts[:service] opts[:service] = self.class.absolute_service_name(relative_service_name) ::Keychain.generic_passwords.create(opts) end
update_or_create_keychain_item(opts = {})
click to toggle source
# File lib/get_to_work/keychain.rb, line 25 def update_or_create_keychain_item(opts = {}) keychain_items = self.class.find(service: opts[:service]) ::Keychain.generic_passwords.where( service: @absolute_service_name ) if item = keychain_items.first item.account = opts[:account] item.password = opts[:password] else create_keychain_item(opts) end end