class Lita::Handlers::ROTP
@author Tim Heckman <tim@pagerduty.com>
Public Class Methods
default_config(config)
click to toggle source
# File lib/lita/handlers/rotp.rb, line 53 def self.default_config(config) config.secret_pairs = {} end
Public Instance Methods
hotp(response)
click to toggle source
# File lib/lita/handlers/rotp.rb, line 86 def hotp(response) md = response.match_data name, counter = [md['name'], md['counter']] counter = counter.strip.to_i if counter.is_a?(String) secret = config.secret_pairs[name.to_sym] return response.reply(t('not_found', n: name)) if secret.nil? response.reply(hotp_generate(secret, counter)) end
otp(response)
click to toggle source
# File lib/lita/handlers/rotp.rb, line 57 def otp(response) md = response.match_data name, counter = [md['name'], md['counter']] counter = counter.strip.to_i if counter.is_a?(String) reply = '' if counter.nil? secret = config.secret_pairs[name.to_sym] return response.reply(t('not_found', n: name)) if secret.nil? reply = totp_generate(secret) else secret = config.secret_pairs[name.to_sym] return response.reply(t('not_found', n: name)) if secret.nil? reply = hotp_generate(secret, counter) end response.reply(reply) end
totp(response)
click to toggle source
# File lib/lita/handlers/rotp.rb, line 77 def totp(response) name = response.match_data['name'] secret = config.secret_pairs[name.to_sym] return response.reply(t('not_found', n: name)) if secret.nil? response.reply(totp_generate(secret)) end
Private Instance Methods
hotp_generate(secret, counter)
click to toggle source
# File lib/lita/handlers/rotp.rb, line 107 def hotp_generate(secret, counter) t('token', t: ::ROTP::HOTP.new(secret).at(counter.to_i)) rescue StandardError => e t('boom', m: e.message) end
totp_generate(secret)
click to toggle source
# File lib/lita/handlers/rotp.rb, line 101 def totp_generate(secret) t('token', t: ::ROTP::TOTP.new(secret).now) rescue StandardError => e t('boom', m: e.message) end