class PsuDir::Disambiguate::Email

This class allows you to use LDAP to extract user information

from an email or list of emails

Public Class Methods

disambiguate(email) click to toggle source
# File lib/psu_dir/disambiguate/email.rb, line 9
def disambiguate(email)
  return unless email.include?('@psu.edu')
  email_in_name(email)
end

Private Class Methods

email_in_name(email_list) click to toggle source
# File lib/psu_dir/disambiguate/email.rb, line 16
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) || [User.results_hash(mail: [email.address])]).first
  end
  results
end
ldap_attributes_for_email(email) click to toggle source
# File lib/psu_dir/disambiguate/email.rb, line 27
def ldap_attributes_for_email(email)
  users = User.query_ldap_by_mail(email, ldap_attrs)
  users.count < 1 ? nil : users
end