Class: Tome::Tome

Inherits:
Object
  • Object
show all
Defined in:
lib/tome/tome.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tome_filename, master_password) ⇒ Tome

Returns a new instance of Tome.



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/tome/tome.rb', line 29

def initialize(tome_filename, master_password)
  if tome_filename.nil? || tome_filename.empty?
    raise ArgumentError
  end
  
  if master_password.nil? || master_password.empty?
    raise MasterPasswordError
  end

  @tome_filename = tome_filename
  @master_password = master_password

  # TODO: This is suboptimal. We are loading the store
  # twice for most operations because of this authentication.
  authenticate()
end

Class Method Details

.create!(tome_filename, master_password, stretch = 100_000) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/tome/tome.rb', line 16

def self.create!(tome_filename, master_password, stretch = 100_000)
  if tome_filename.nil? || tome_filename.empty?
    raise ArgumentError
  end

  if master_password.nil? || master_password.empty?
    raise MasterPasswordError
  end

  save_tome(tome_filename, new_tome(stretch), {}, master_password)
  return Tome.new(tome_filename, master_password)
end

.exists?(tome_filename) ⇒ Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/tome/tome.rb', line 12

def self.exists?(tome_filename)
  return !load_tome(tome_filename).nil?
end

Instance Method Details

#delete(id) ⇒ Object



76
77
78
79
80
81
82
83
84
# File 'lib/tome/tome.rb', line 76

def delete(id)
  if id.nil? || id.empty?
    raise ArgumentError
  end

  return writable_store do |store|
    delete_by_id(store, id)
  end
end

#each_passwordObject



96
97
98
99
100
101
102
103
104
105
106
# File 'lib/tome/tome.rb', line 96

def each_password
  if !block_given?
    raise ArgumentError
  end

  readable_store do |store|
    store.each { |id, info|
      yield id, info[:password]
    }
  end 
end

#find(pattern) ⇒ Object



66
67
68
69
70
71
72
73
74
# File 'lib/tome/tome.rb', line 66

def find(pattern)
  if pattern.nil? || pattern.empty?
    raise ArgumentError
  end

  return readable_store do |store|
    get_by_pattern(store, pattern)
  end
end

#get(id) ⇒ Object



56
57
58
59
60
61
62
63
64
# File 'lib/tome/tome.rb', line 56

def get(id)
  if id.nil? || id.empty?
    raise ArgumentError
  end

  return readable_store do |store|
    get_by_id(store, id)
  end
end

#master_password=(master_password) ⇒ Object



108
109
110
111
112
113
# File 'lib/tome/tome.rb', line 108

def master_password=(master_password)
  return writable_store do |store|
    @master_password = master_password
    true
  end
end

#rename(old_id, new_id) ⇒ Object



86
87
88
89
90
91
92
93
94
# File 'lib/tome/tome.rb', line 86

def rename(old_id, new_id)
  if old_id.nil? || old_id.empty? || new_id.nil? || new_id.empty?
    raise ArgumentError
  end

  return writable_store do |store|
    rename_by_id(store, old_id, new_id)
  end
end

#set(id, password) ⇒ Object



46
47
48
49
50
51
52
53
54
# File 'lib/tome/tome.rb', line 46

def set(id, password)
  if id.nil? || id.empty? || password.nil? || password.empty?
    raise ArgumentError
  end

  return writable_store do |store|
    set_by_id(store, id, password)
  end
end