Module: SASL

Defined in:
lib/sasl/base.rb,
lib/sasl/plain.rb,
lib/sasl/anonymous.rb,
lib/sasl/digest_md5.rb

Overview

Defined Under Namespace

Classes: AbstractMethod, Anonymous, DigestMD5, Mechanism, Plain, Preferences, UnknownMechanism

Class Method Summary collapse

Class Method Details

.new(mechanisms, preferences) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/sasl/base.rb', line 63

def SASL.new(mechanisms, preferences)
  best_mechanism = if preferences.want_anonymous? && mechanisms.include?('ANONYMOUS')
                     'ANONYMOUS'
                   elsif preferences.has_password?
                     if mechanisms.include?('DIGEST-MD5')
                       'DIGEST-MD5'
                     elsif preferences.allow_plaintext?
                       'PLAIN'
                     else
                       raise UnknownMechanism.new(mechanisms)
                     end
                   else
                     raise UnknownMechanism.new(mechanisms)
                   end
  new_mechanism(best_mechanism, preferences)
end

.new_mechanism(mechanism, preferences) ⇒ Object

Create a SASL Mechanism for the named mechanism

mechanism
String

mechanism name



84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/sasl/base.rb', line 84

def SASL.new_mechanism(mechanism, preferences)
  mechanism_class = case mechanism
                    when 'DIGEST-MD5'
                      DigestMD5
                    when 'PLAIN'
                      Plain
                    when 'ANONYMOUS'
                      Anonymous
                    else
                      raise UnknownMechanism.new(mechanism)
                    end
  mechanism_class.new(mechanism, preferences)
end