class OtpCli::OTP

Attributes

issuer[R]
name[R]

Public Class Methods

get(line) click to toggle source
# File lib/otp-cli/otp.rb, line 11
def self.get(line)
        uri       = URI line
        type      = uri.host.to_sym
        name      = uri.path.sub %r{^/}, ''
        query     = CGI.parse uri.query
        secret    = query['secret'].first
        issuer    = query['issuer'].first
        algorithm = query['algorithm'].first || 'sha1'
        digits    = numeric_value query, 'digits', 6
        counter   = numeric_value query, 'counter'
        period    = numeric_value query, 'period', 30

        case type
        when :hotp then
                HOTP.new line, name, secret, issuer, algorithm, digits, counter
        when :totp then
                TOTP.new line, name, secret, issuer, algorithm, digits, period
        end
end
new(otp, line, name, secret, issuer=nil, algorithm='sha1', digits=6) click to toggle source
# File lib/otp-cli/otp.rb, line 51
def initialize(otp, line, name, secret, issuer=nil, algorithm='sha1', digits=6)
        @otp       = otp
        @line      = line
        @name      = name
        @secret    = secret
        @issuer    = issuer
        @algorithm = algorithm
        @digits    = digits
end

Private Class Methods

numeric_value(query, name, default_value = nil) click to toggle source
# File lib/otp-cli/otp.rb, line 63
def self.numeric_value(query, name, default_value = nil)
        value = query[name].first
        return default_value if value.nil?
        value.to_i
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/otp-cli/otp.rb, line 45
def <=>(other)
        self.to_s.downcase <=> other.to_s.downcase
end
qrcode() { |file| ... } click to toggle source
# File lib/otp-cli/otp.rb, line 31
def qrcode
        ::Tempfile.open %w[qrcode .png] do |file|
                qrcode = RQRCode::QRCode.new @line
                IO.write file, qrcode.as_png
                yield file
        end
end
to_s() click to toggle source
# File lib/otp-cli/otp.rb, line 39
def to_s
        s = self.name.clone
        s << %{ (#{self.issuer})} unless self.issuer.nil?
        s
end