Class: Keepassx::Database

Inherits:
Object
  • Object
show all
Includes:
Dumper, Finder, Loader
Defined in:
lib/keepassx/database.rb,
lib/keepassx/database/dumper.rb,
lib/keepassx/database/finder.rb,
lib/keepassx/database/loader.rb

Defined Under Namespace

Modules: Dumper, Finder, Loader

Instance Attribute Summary

Attributes included from Loader

#entries, #groups, #header

Instance Method Summary collapse

Methods included from Finder

#find_entries, #find_entry, #find_group, #find_groups, #search

Methods included from Loader

#checksum, #initialize, #length, #payload, #unlock

Methods included from Dumper

#save, #to_a, #to_yaml

Instance Method Details

#add_entry(opts) ⇒ Keepassx::Entry

Add new entry to database.

Parameters:

  • opts (Hash)

    Options that will be passed to Keepassx::Entry#new.

Returns:

Raises:

  • (ArgumentError)


68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/keepassx/database.rb', line 68

def add_entry(opts)
  raise ArgumentError, "Expected Hash or Keepassx::Entry, got #{opts.class}" unless valid_entry?(opts)

  if opts.is_a?(Keepassx::Entry)
    # Add entry
    @entries << opts

    # Increment counter
    header.entries_count += 1

    # Return entry
    opts

  elsif opts.is_a?(Hash)
    opts = deep_copy(opts)
    opts = build_entry_options(opts)

    # Create entry
    entry = create_entry(opts)

    # Increment counter
    header.entries_count += 1

    # Return entry
    entry
  end
end

#add_group(opts) ⇒ Keepassx::Group

Add new group to database.

rubocop:disable Metrics/MethodLength

Parameters:

  • opts (Hash)

    Options that will be passed to Keepassx::Group#new.

Returns:

Raises:

  • (ArgumentError)


32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/keepassx/database.rb', line 32

def add_group(opts)
  raise ArgumentError, "Expected Hash or Keepassx::Group, got #{opts.class}" unless valid_group?(opts)

  if opts.is_a?(Keepassx::Group)
    # Assign parent group
    parent = opts.parent
    index  = last_sibling_index(parent) + 1
    @groups.insert(index, opts)

    # Increment counter
    header.groups_count += 1

    # Return group
    opts

  elsif opts.is_a?(Hash)
    opts = deep_copy(opts)
    opts = build_group_options(opts)

    # Create group
    group = create_group(opts)

    # Increment counter
    header.groups_count += 1

    # Return group
    group
  end
end

#delete_entry(item) ⇒ Object



112
113
114
115
116
# File 'lib/keepassx/database.rb', line 112

def delete_entry(item)
  item = entries.delete(item)
  header.entries_count -= 1
  item
end

#delete_group(item) ⇒ Object



97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/keepassx/database.rb', line 97

def delete_group(item)
  # Get group entries and delete them
  group_entries = entries.select { |e| e.group == item }
  group_entries.each { |e| delete_entry(e) }

  # Recursively delete ancestor groups
  group_ancestors = groups.select { |g| g.parent == item }
  group_ancestors.each { |g| delete_group(g) }

  item = groups.delete(item)
  header.groups_count -= 1
  item
end

#locked?Boolean

Get lock state

Returns:

  • (Boolean)


22
23
24
# File 'lib/keepassx/database.rb', line 22

def locked?
  @locked
end

#valid?Boolean

Check database validity.

Returns:

  • (Boolean)


14
15
16
# File 'lib/keepassx/database.rb', line 14

def valid?
  header.valid?
end