class MastercoinWallet::Config

Constants

DEFAULT

Attributes

options[RW]

Public Class Methods

new() click to toggle source
# File lib/mastercoin-wallet/config.rb, line 6
def initialize
  self.ensure_config!

  config = File.open(MastercoinWallet::FILE_PATH).read()

  if config.empty?
    self.options = DEFAULT
  else
    self.options = ActiveSupport::HashWithIndifferentAccess.new(JSON.load(config)).reverse_merge(DEFAULT)
  end
end

Public Instance Methods

get_encrypted_key(key, password) click to toggle source
# File lib/mastercoin-wallet/config.rb, line 26
def get_encrypted_key(key, password)
  aes = OpenSSL::Cipher.new("AES-256-CFB") 
  digest_key = Digest::SHA2.hexdigest(password)
  aes.key = digest_key

  begin
    aes.update(self.get_key(key).unpack('m')[0])
  rescue ArgumentError
  end
end
get_key(key) click to toggle source
# File lib/mastercoin-wallet/config.rb, line 63
def get_key(key)
  return self.options[key] if has_key?(key)
end
has_key?(key) click to toggle source
# File lib/mastercoin-wallet/config.rb, line 67
def has_key?(key)
  self.options.has_key?(key)
end
has_options?() click to toggle source
# File lib/mastercoin-wallet/config.rb, line 77
def has_options?
  !self.options.empty?
end
method_missing(method, *args) click to toggle source
Calls superclass method
# File lib/mastercoin-wallet/config.rb, line 18
def method_missing(method, *args)
  if self.options.has_key?(method)
    self.get_key(method)
  else
    super(method, args)
  end
end
save() click to toggle source
# File lib/mastercoin-wallet/config.rb, line 71
def save
  config = File.open(MastercoinWallet::FILE_PATH, "w")
  config.write( JSON.dump(self.options) )
  config.close
end
set_encrypted_key(key, value, password) click to toggle source
# File lib/mastercoin-wallet/config.rb, line 37
def set_encrypted_key(key, value, password)
  aes = OpenSSL::Cipher.new("AES-256-CFB") 
  digest_key = Digest::SHA2.hexdigest(password)

  aes.encrypt
  aes.key = digest_key

  encrypted_value = [aes.update(value)].pack('m')

  set_key(key, encrypted_value)
end
set_key(key, value) click to toggle source
# File lib/mastercoin-wallet/config.rb, line 59
def set_key(key, value)
  self.options[key] = value
end
set_key!(key, value) click to toggle source
# File lib/mastercoin-wallet/config.rb, line 54
def set_key!(key, value)
  set_key(key, value)
  self.save
end
set_keys!(options = {}) click to toggle source
# File lib/mastercoin-wallet/config.rb, line 49
def set_keys!(options = {})
  self.options.merge!(options)
  self.save
end

Protected Instance Methods

ensure_config!() click to toggle source
# File lib/mastercoin-wallet/config.rb, line 82
def ensure_config!
  unless Dir.exists?(MastercoinWallet::CONFIG_PATH)
    FileUtils.mkdir_p(MastercoinWallet::CONFIG_PATH)
  end

  unless File.exists?(MastercoinWallet::FILE_PATH)
    FileUtils.touch(MastercoinWallet::FILE_PATH)
  end
end