Sha256: 5c4dc6a6b94afb92385429dcb1184ac54ae6917ba0eaf986110759063c4d3da4

Contents?: true

Size: 949 Bytes

Versions: 2

Compression:

Stored size: 949 Bytes

Contents

# frozen_string_literal: true

module LdapDisambiguate
  # This class allows you to use LDAP to extract user information
  #  from an email or list of emails
  #
  class Email < Base
    class << self
      def disambiguate(email)
        return unless email.include?('@psu.edu')
        email_in_name(email)
      end

      private

      def email_in_name(email_list)
        parts = email_list.split(' ')
        emails = parts.select { |part| part.include?('@') }
        results = []
        Array(emails).each do |email_str|
          email = Mail::Address.new(email_str)
          results << (ldap_attributes_for_id(email.local) || ldap_attributes_for_email(email.address) || [LdapUser.results_hash(mail: [email.address])]).first
        end
        results
      end

      def ldap_attributes_for_email(email)
        users = LdapUser.query_ldap_by_mail(email, ldap_attrs)
        users.count < 1 ? nil : users
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ldap_disambiguate-0.0.5 lib/ldap_disambiguate/email.rb
ldap_disambiguate-0.0.4 lib/ldap_disambiguate/email.rb