Sha256: efbf93e2b6cb6bc9d9d4e9551fe103d3ce05fe251d09def36ad5f076337570a0

Contents?: true

Size: 1.47 KB

Versions: 5

Compression:

Stored size: 1.47 KB

Contents

# frozen_string_literal: true

# Registry for SASL authenticators used by Net::IMAP.
module Net::IMAP::Authenticators

  # Adds an authenticator for use with Net::IMAP#authenticate.  +auth_type+ is the
  # {SASL mechanism}[https://www.iana.org/assignments/sasl-mechanisms/sasl-mechanisms.xhtml]
  # supported by +authenticator+ (for instance, "+PLAIN+").  The +authenticator+
  # is an object which defines a +#process+ method to handle authentication with
  # the server.  See Net::IMAP::PlainAuthenticator, Net::IMAP::LoginAuthenticator,
  # Net::IMAP::CramMD5Authenticator, and Net::IMAP::DigestMD5Authenticator for
  # examples.
  #
  # If +auth_type+ refers to an existing authenticator, it will be
  # replaced by the new one.
  def add_authenticator(auth_type, authenticator)
    authenticators[auth_type] = authenticator
  end

  # Builds an authenticator for Net::IMAP#authenticate.  +args+ will be passed
  # directly to the chosen authenticator's +#initialize+.
  def authenticator(auth_type, *args)
    auth_type = auth_type.upcase
    unless authenticators.has_key?(auth_type)
      raise ArgumentError,
        format('unknown auth type - "%s"', auth_type)
    end
    authenticators[auth_type].new(*args)
  end

  private

  def authenticators
    @authenticators ||= {}
  end

end

Net::IMAP.extend Net::IMAP::Authenticators

require_relative "authenticators/login"
require_relative "authenticators/plain"
require_relative "authenticators/cram_md5"
require_relative "authenticators/digest_md5"

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
net-imap-0.2.4 lib/net/imap/authenticators.rb
scrapbook-0.3.2 vendor/ruby/2.7.0/gems/net-imap-0.2.3/lib/net/imap/authenticators.rb
scrapbook-0.3.1 vendor/ruby/2.7.0/gems/net-imap-0.2.3/lib/net/imap/authenticators.rb
net-imap-0.2.3 lib/net/imap/authenticators.rb
net-imap-0.2.2 lib/net/imap/authenticators.rb