lib/keystorage/manager.rb in keystorage-0.4.1 vs lib/keystorage/manager.rb in keystorage-0.4.2

- old
+ new

@@ -10,12 +10,17 @@ def set(group,key,value,file=nil) Manager.new(file).set(group,key,value) end def get(group,name,file=nil) - Manager.new(file).get(group,name) + Manager.new(file).get(group,name) end + + def delete(group,name=nil,file=nil) + Manager.new(file).delete(group,name) + end + end class Manager def initialize(file=nil) @@ -37,14 +42,20 @@ def get(group,name) raise "missing group" unless group raise "missing name" unless name - File.open(@file,'r') do |f| - data=YAML.load(f) - raise "missing key" unless data[group][name] - return decode(data[group][name]) + begin + File.open(@file,'r') do |f| + data=YAML.load(f) + raise "missing keystorage" unless data + raise "missing group "+group unless data.has_key?(group) + raise "missing group "+group+" name "+name unless data[group].has_key?(name) + + return decode(data[group][name]) + end + rescue =>e end false end def all @@ -55,13 +66,26 @@ def set(group,key,value) data=all data = Hash.new unless data data[group] = Hash.new unless data.has_key?(group) data[group][key] = encode(value) + write(data) + end + def write(data) File.open(@file,'w',0600) do |f| YAML.dump(data,f) end + end + + def delete(group,name = nil) + data = all + if name + data[group].delete(name) + else + data.delete(group) + end + write(data) end def encode(str,salt="3Qw9EtWE") enc = OpenSSL::Cipher::Cipher.new('aes256') enc.encrypt.pkcs5_keyivgen(salt)