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