module PWS::Otp

Constants

VERSION

Public Instance Methods

get_totp(key, seconds = @options[:seconds]) click to toggle source

Gets the TOTP secrect and copies current time based key to the clipboard. The second parameter is the time in seconds it stays there

# File lib/pws/otp.rb, line 10
def get_totp(key, seconds = @options[:seconds])
  if real_key = @abbrevs[key]
    secret = @data[real_key][:password]
    password = ROTP::TOTP.new(secret).now
    if seconds && seconds.to_i > 0
      original_clipboard_content = Clipboard.paste
      Clipboard.copy(password)
      pa %[The password for #{real_key} is now available in your clipboard for #{seconds.to_i} second#{?s if seconds.to_i > 1}], :green
      begin
        sleep seconds.to_i
      rescue Interrupt
        Clipboard.copy original_clipboard_content
        raise
      end
      Clipboard.copy original_clipboard_content
      return true
    else
      Clipboard.copy(password)
      pa %[The password for #{real_key} has been copied to your clipboard], :green
      return true
    end
  else
    pa %[No password found for #{key}!], :red
    return false
  end
end