class Oraora::Credentials

Attributes

database[RW]
password[RW]
user[RW]

Public Class Methods

new(user = nil, password = nil, database = nil) click to toggle source
# File lib/oraora/credentials.rb, line 8
def initialize(user = nil, password = nil, database = nil)
  @user = user
  @password = password
  @database = database
end
parse(str) click to toggle source
# File lib/oraora/credentials.rb, line 29
def self.parse(str)
  if str
    match = str.match /^([^\/@]+)?\/?([^\/@]+)?@?([^\/@]+)?$/
    raise ParseError, "invalid format (use login/pass@DB)" if !match
    user, password, database = match[1..3]
    raise ParseError, "user can only contain alphanumeric characters" if user && !user.match(/^\w+$/)
    raise ParseError, "database name can only contain alphanumeric characters" if database && !database.match(/^\w+$/)
    return new(user, password, database)
  else
    return new
  end
end
read_passfile(filename) click to toggle source
# File lib/oraora/credentials.rb, line 14
def self.read_passfile(filename)
  @@vault = []
  ok = true
  File.open(filename, "r") do |infile|
    while (line = infile.gets)
      begin
        @@vault << parse(line.chomp)
      rescue ParseError
        ok = false
      end
    end
  end
  ok
end

Public Instance Methods

eql?(c) click to toggle source
# File lib/oraora/credentials.rb, line 56
def eql?(c)
  user == c.user && password == c.password && database == c.database
end
fill_password_from_vault() click to toggle source
# File lib/oraora/credentials.rb, line 42
def fill_password_from_vault
  entry = @@vault.detect { |e| match?(e) }
  @password = entry.password if entry && !@password
  self
end
match?(c) click to toggle source
# File lib/oraora/credentials.rb, line 60
def match?(c)
  user == c.user && database == c.database
end
to_s() click to toggle source
# File lib/oraora/credentials.rb, line 48
def to_s
  s = @user || ''
  s += '/' + @password if @password
  s = '/' if s == ''
  s += '@' + @database if @database
  s
end