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)