class Passman::Manager

Constants

DEFAULT_PATH

Public Class Methods

new(file = nil) click to toggle source
# File lib/passman/manager.rb, line 9
def initialize(file = nil)
  @file_path = DEFAULT_PATH
  @file_path = file unless file.nil?
end

Public Instance Methods

add(account, username, password, key) click to toggle source
# File lib/passman/manager.rb, line 18
def add(account, username, password, key)
  validate_add_arguments(account, username, password, key)
  db = database
  db[account.to_s] = { username: username, password: Passman::Crypto.encrypt(password, key) }
  store_data(db)
end
delete(account) click to toggle source
# File lib/passman/manager.rb, line 25
def delete(account)
  raise ArgumentError, 'No account provided.' unless valid?(account)
  db = database
  db.delete(account.to_s)
  store_data(db)
end
exist?(account) click to toggle source
# File lib/passman/manager.rb, line 39
def exist?(account)
  raise ArgumentError, 'No account provided.' unless valid?(account)
  !(!database[account.to_s])
end
generate_password(length = 32) click to toggle source
# File lib/passman/manager.rb, line 14
def generate_password(length = 32)
  Passman::PasswordGenerator.generate(length)
end
get(account, key) click to toggle source
# File lib/passman/manager.rb, line 32
def get(account, key)
  validate_get_arguments(account, key)
  data = database[account.to_s]
  [account.to_s, { 'username' => data['username'],
                   'password' => Passman::Crypto.decrypt(data['password'], key) }]
end
list() click to toggle source
# File lib/passman/manager.rb, line 44
def list
  database
end

Private Instance Methods

database() click to toggle source
# File lib/passman/manager.rb, line 66
def database
  return JSON.parse(File.read(@file_path)) if File.exist?(@file_path)
  {}
end
store_data(data) click to toggle source
# File lib/passman/manager.rb, line 71
def store_data(data)
  File.delete(@file_path) if File.exist?(@file_path)
  file = File.open(@file_path, 'w+')
  file.write(JSON.generate(data))
  file.close
end
valid?(argument) click to toggle source
# File lib/passman/manager.rb, line 62
def valid?(argument)
  !(argument.nil? || argument.empty?)
end
validate_add_arguments(account, username, password, key) click to toggle source
# File lib/passman/manager.rb, line 50
def validate_add_arguments(account, username, password, key)
  raise ArgumentError, 'No account provided.' unless valid?(account)
  raise ArgumentError, 'No username provided.' unless valid?(username)
  raise ArgumentError, 'No password provided.' unless valid?(password)
  raise ArgumentError, 'No key provided.' unless valid?(key)
end
validate_get_arguments(account, key) click to toggle source
# File lib/passman/manager.rb, line 57
def validate_get_arguments(account, key)
  raise ArgumentError, 'No account provided.' unless valid?(account)
  raise ArgumentError, 'No key provided.' unless valid?(key)
end