Sha256: 26c69d767427bcc984f07ac9e955244aac295f7e7bb1c8bf3efc370c24c8db78

Contents?: true

Size: 1.43 KB

Versions: 1

Compression:

Stored size: 1.43 KB

Contents

require 'net/ldap'

module CMU
  class Person
  	class RecordNotFound < StandardError;	end

  	def initialize(andrewid)
  		raise RecordNotFound unless @data = fetch(andrewid)
  	end

    def fetch(user)
      ldap = Net::LDAP.new(:host => 'ldap.andrew.cmu.edu')
      ldap.search(:base => 'ou=Person,dc=cmu,dc=edu', 
                  :filter => 'cmuAndrewId='+user ).first
    end

    def andrew_id
      @data[:cmuAndrewId].last
    end

    def name
  		@data[:cn].last
    end
  
    def last_name
  		@data[:sn].last
    end
  
    def first_name
  		@data[:givenname].last
    end
  
    def email
    	if @data.attribute_names.include?(:cmupreferredmail)
  	  	@data[:cmupreferredmail].last
  	  else
    		@data[:mail].last
    	end
    end
  
    def type 
    	@data[:edupersonaffiliation].last
    end
  
    def title
     	if @data.attribute_names.include?(:title)
  			@data[:title].last
  		else
  	  	if @data.attribute_names.include?(:cmutitle)
  				@data[:cmutitle].last
  			else
  				nil
  			end
  		end  	
  	end
  
    def grade
    	if @data.attribute_names.include?(:cmustudentclass)
  			@data[:cmustudentclass].last
  		else
  			nil
  		end
  	end  	

    def department
  	  @data[:cmudepartment].last
    end

    def school
  	  @data[:edupersonschoolcollegename].last
    end
    
    def to_s
  		@data.collect{|i,j| i.to_s.ljust(30)+":\t"+(j.is_a?(Array) ? "[ "+j.join(", ")+" ]" : j.to_s)+"\n"}.join("\n")
  	end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cmu-person-0.0.1 lib/cmu-person.rb