class OnePassword::Profile

Attributes

directory[R]
encryption_keys[R]
name[R]

Public Class Methods

new(keychain, directory) click to toggle source

@param [OnePassword::Keychain] keychain @param [String, Pathname] directory

# File lib/one_password/profile.rb, line 8
def initialize(keychain, directory)
  @keychain  = keychain
  @name      = File.basename(directory)
  @directory = Pathname(directory)
end

Public Instance Methods

all() click to toggle source
# File lib/one_password/profile.rb, line 21
def all
  load_contents unless @all
  @all
end
all_encryption_keys() click to toggle source
# File lib/one_password/profile.rb, line 31
def all_encryption_keys
  load_encryption_keys unless @all_encryption_keys
  @all_encryption_keys
end
contents() click to toggle source
# File lib/one_password/profile.rb, line 16
def contents
  load_contents unless @contents
  @contents
end
encryption_keys_loaded?() click to toggle source
# File lib/one_password/profile.rb, line 36
def encryption_keys_loaded?
  !!@encryption_keys
end
password() click to toggle source
# File lib/one_password/profile.rb, line 40
def password
  raise NoPassword unless @password
  @password
end
password=(password) click to toggle source
# File lib/one_password/profile.rb, line 45
def password=(password)
  @password = password
end

Protected Instance Methods

contents=(new_contents) click to toggle source

@param [Array] new_contents

# File lib/one_password/profile.rb, line 68
def contents=(new_contents)
  @all      = {}
  @contents = CATEGORIES.inject({}) do |result, type|
    result[type] = []
    result
  end

  new_contents.each do |item_array|
    item = Item.new(self, item_array)
    next if item.system?

    @all[item.uuid] = item
    @contents[item.category] << item
  end

  @contents
end
contents_file() click to toggle source
# File lib/one_password/profile.rb, line 51
def contents_file
  @directory.join('contents.js')
end
encryption_keys=(keys) click to toggle source
# File lib/one_password/profile.rb, line 86
def encryption_keys=(keys)
  @all_encryption_keys = keys.delete('list').map { |data| EncryptionKey.new(self, data) }
  @encryption_keys     = keys.inject({}) do |result, (type, identifier)|
    result[type] = @all_encryption_keys.find { |key| key.identifier == identifier }
    result
  end
end
encryption_keys_file() click to toggle source
# File lib/one_password/profile.rb, line 55
def encryption_keys_file
  @directory.join('encryptionKeys.js')
end
load_contents() click to toggle source
# File lib/one_password/profile.rb, line 63
def load_contents
  self.contents = JSON.parse(File.read(contents_file)) unless @contents
end
load_encryption_keys() click to toggle source
# File lib/one_password/profile.rb, line 59
def load_encryption_keys
  self.encryption_keys = JSON.parse(File.read(encryption_keys_file))
end