Class: Lita::Handlers::ROTP

Inherits:
Handler
  • Object
show all
Defined in:
lib/lita/handlers/rotp.rb

Overview

The ROTP wrapper for Lita

Author:

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.default_config(config) ⇒ Object



54
55
56
# File 'lib/lita/handlers/rotp.rb', line 54

def self.default_config(config)
  config.secret_pairs = {}
end

Instance Method Details

#hotp(response) ⇒ Object



87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/lita/handlers/rotp.rb', line 87

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) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/lita/handlers/rotp.rb', line 58

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) ⇒ Object



78
79
80
81
82
83
84
85
# File 'lib/lita/handlers/rotp.rb', line 78

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