cmu_person 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
@@ -8,17 +8,17 @@ GEM
8
8
  remote: http://rubygems.org/
9
9
  specs:
10
10
  diff-lcs (1.1.3)
11
- net-ldap (0.2.2)
12
- redcarpet (2.0.1)
13
- rspec (2.7.0)
14
- rspec-core (~> 2.7.0)
15
- rspec-expectations (~> 2.7.0)
16
- rspec-mocks (~> 2.7.0)
17
- rspec-core (2.7.1)
18
- rspec-expectations (2.7.0)
19
- diff-lcs (~> 1.1.2)
20
- rspec-mocks (2.7.0)
21
- yard (0.7.4)
11
+ net-ldap (0.3.1)
12
+ redcarpet (2.1.1)
13
+ rspec (2.10.0)
14
+ rspec-core (~> 2.10.0)
15
+ rspec-expectations (~> 2.10.0)
16
+ rspec-mocks (~> 2.10.0)
17
+ rspec-core (2.10.0)
18
+ rspec-expectations (2.10.0)
19
+ diff-lcs (~> 1.1.3)
20
+ rspec-mocks (2.10.1)
21
+ yard (0.8.1)
22
22
 
23
23
  PLATFORMS
24
24
  ruby
@@ -6,6 +6,7 @@ Originally inspired by [David Taylor](https://github.com/tinystatemachine)'s [an
6
6
  Installation
7
7
  ------------
8
8
  If you want to use this gem for personal use in your terminal, just type the following command in bash:
9
+
9
10
  ```bash
10
11
  gem install cmu_person
11
12
  ```
@@ -3,25 +3,24 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'cmu_person'
6
- s.version = '0.0.1'
6
+ s.version = '0.0.2'
7
7
  s.author = 'Seth Vargo'
8
8
  s.email = 'sethvargo@gmail.com'
9
9
  s.homepage = 'https://github.com/sethvargo/cmu_person'
10
10
  s.summary = %q{A simple interface for searching CMU LDAP directory}
11
11
  s.description = %q{This tool is used to search Carnegie Mellon's LDAP directory. Provide an Andrew ID and this will automatically parse the results and return them in a readable format.}
12
12
 
13
- s.rubyforge_project = 'cmu_person'
14
-
15
13
  s.files = `git ls-files`.split("\n")
16
14
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
15
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
16
  s.require_paths = ["lib"]
19
17
 
20
18
  # development dependencies
19
+ s.add_development_dependency "rake"
21
20
  s.add_development_dependency 'redcarpet'
22
21
  s.add_development_dependency 'rspec'
23
22
  s.add_development_dependency 'yard'
24
-
23
+
25
24
  # runtime dependencies
26
25
  s.add_runtime_dependency 'net-ldap'
27
26
  end
@@ -10,32 +10,31 @@ module CMU
10
10
  # @param [String] the Andrew ID to search for
11
11
  # @raise [CMU::RecordNotFound] if the Andrew ID does not exist
12
12
  # @return [CMU::Person] a `CMU::Person` object
13
- def self.find(andrew_id)
14
- CMU::Person.new(andrew_id)
15
- end
16
-
17
- # Attempts to create and return a new CMU::Person from the CMU LDAP directory.
18
- # Unlink (see #find), this method will not raise an exception if the Andrew
19
- # ID is not found.
20
- #
21
- # @param [String] the Andrew ID to search for
13
+ def self.find(andrew_id)
14
+ CMU::Person.new(andrew_id)
15
+ end
16
+
17
+ # Attempts to create and return a new CMU::Person from the CMU LDAP directory.
18
+ # Unlink (see #find), this method will not raise an exception if the Andrew
19
+ # ID is not found.
20
+ #
21
+ # @param [String] the Andrew ID to search for
22
22
  # @return [CMU::Person] a `CMU::Person` object
23
- def self.find_by_andrew_id(andrew_id)
24
- begin
25
- find(andrew_id)
26
- rescue
27
- nil
23
+ def self.find_by_andrew_id(andrew_id)
24
+ begin
25
+ find(andrew_id)
26
+ rescue
27
+ nil
28
28
  end
29
- end
30
-
31
- # ::nodoc::
32
- # @private
33
- def initialize(andrew_id)
34
- ldap = Net::LDAP.new(:host => 'ldap.andrew.cmu.edu')
35
- @data = ldap.search(:base => 'ou=Person,dc=cmu,dc=edu',
36
- :filter => 'cmuAndrewId=' + andrew_id).first
29
+ end
30
+
31
+ # ::nodoc::
32
+ # @private
33
+ def initialize(andrew_id)
34
+ ldap = Net::LDAP.new(:host => 'ldap.andrew.cmu.edu')
35
+ @data = ldap.search(:base => 'ou=Person,dc=cmu,dc=edu', :filter => 'cmuAndrewId=' + andrew_id).first
37
36
  raise CMU::RecordNotFound if @data.nil?
38
- end
37
+ end
39
38
 
40
39
  # Returns the Andrew ID of the CMU Person
41
40
  #
@@ -43,44 +42,44 @@ module CMU
43
42
  def andrew_id
44
43
  @andrew_id ||= @data[:cmuAndrewId].last
45
44
  end
46
-
45
+
47
46
  # Returns the full name of the CMU Person
48
47
  #
49
48
  # @return [String] the full name of the current CMU Person
50
49
  def name
51
- @name ||= @data[:cn].last
50
+ @name ||= @data[:cn].last
52
51
  end
53
-
52
+
54
53
  # Returns the last name of the CMU Person
55
54
  #
56
55
  # @return [String] the last name of the current CMU Person
57
56
  def last_name
58
- @last_name ||= @data[:sn].last
57
+ @last_name ||= @data[:sn].last
59
58
  end
60
-
59
+
61
60
  # Returns the first name of the CMU Person
62
61
  #
63
62
  # @return [String] the first name of the current CMU Person
64
63
  def first_name
65
- @first_name ||= @data[:givenname].last
64
+ @first_name ||= @data[:givenname].last
66
65
  end
67
-
66
+
68
67
  # Returns the email of the CMU Person. If the CMU Person has
69
68
  # listed a preferred email, it will be displayed. Otherwise,
70
69
  # the official Andrew Email will be used.
71
70
  #
72
71
  # @return [String] the email of the current CMU Person
73
72
  def email
74
- if @data.attribute_names.include?(:cmupreferredmail)
75
- @email ||= @data[:cmupreferredmail].last
76
- else
77
- @email ||= @data[:mail].last
78
- end
73
+ if @data.attribute_names.include?(:cmupreferredmail)
74
+ @email ||= @data[:cmupreferredmail].last
75
+ else
76
+ @email ||= @data[:mail].last
77
+ end
79
78
  end
80
-
79
+
81
80
  # Returns the phone number for the CMU Person
82
81
  #
83
- # @return [String, nil] the phone number of the current CMU Person
82
+ # @return [String, nil] the phone number of the current CMU Person
84
83
  # or nil if the person did not provide a phone number
85
84
  def phone
86
85
  if @data.attribute_names.include?(:cmupreferredtelephone)
@@ -89,49 +88,49 @@ module CMU
89
88
  @phone ||= nil
90
89
  end
91
90
  end
92
-
91
+
93
92
  # Returns the type for the CMU Person
94
93
  #
95
94
  # @return [String] the type or role of the CMU Person
96
- def type
97
- @type ||= @data[:edupersonaffiliation].last
95
+ def type
96
+ @type ||= @data[:edupersonaffiliation].last
98
97
  end
99
-
98
+
100
99
  # Returns the official title for the CMU Person
101
100
  #
102
101
  # @return [String, nil] the official title for the CMU Person or
103
102
  # nil if the CMU Person has not provided a title
104
103
  def title
105
- if @data.attribute_names.include?(:title)
106
- @title ||= @data[:title].last
107
- else
108
- if @data.attribute_names.include?(:cmutitle)
109
- @title ||= @data[:cmutitle].last
110
- else
111
- @title ||= nil
112
- end
113
- end
114
- end
115
-
104
+ if @data.attribute_names.include?(:title)
105
+ @title ||= @data[:title].last
106
+ else
107
+ if @data.attribute_names.include?(:cmutitle)
108
+ @title ||= @data[:cmutitle].last
109
+ else
110
+ @title ||= nil
111
+ end
112
+ end
113
+ end
114
+
116
115
  # Returns the String representation of the grade of the CMU Person
117
116
  #
118
- # @return [String, nil] the String representation of the grade of
117
+ # @return [String, nil] the String representation of the grade of
119
118
  # the CMU Person ('Freshman', 'Sophomore', 'Junior', 'Senior',
120
119
  # 'Masters', 'Doctorate') or nil for Faculty and Staff
121
120
  def grade
122
- if @data.attribute_names.include?(:cmustudentclass)
123
- @grade ||= @data[:cmustudentclass].last
124
- else
125
- @grade ||= nil
126
- end
127
- end
121
+ if @data.attribute_names.include?(:cmustudentclass)
122
+ @grade ||= @data[:cmustudentclass].last
123
+ else
124
+ @grade ||= nil
125
+ end
126
+ end
128
127
 
129
128
  # Returns department for the CMU Person
130
129
  #
131
- # @return [String, nil] the department for the current CMU Person
130
+ # @return [String, nil] the department for the current CMU Person
132
131
  # or nil if the CMU Person is a student and/or has no department
133
132
  def department
134
- @department ||= @data[:cmudepartment].last
133
+ @department ||= @data[:cmudepartment].last
135
134
  end
136
135
 
137
136
  # Returns the "college" for the CMU Person
@@ -139,20 +138,20 @@ module CMU
139
138
  # @return [String, nil] the actual college the CMU Person belongs to
140
139
  def school
141
140
  filters = ['Student Employment', 'Undergraduate Admission and Student Aid', 'VP For Campus Affairs']
142
- @school ||= @data[:edupersonschoolcollegename].reject{|c| filters.include?(c)}.last
141
+ @school ||= @data[:edupersonschoolcollegename].reject{|c| filters.include?(c)}.last
143
142
  end
144
-
143
+
145
144
  # ::nodoc::
146
145
  # @private
147
146
  def inspect
148
147
  fields = %w(andrew_id first_name last_name email phone type title)
149
148
  @inspect ||= "<CMU::Person #{fields.collect{|f| f + ': ' + self.send(f.to_sym).inspect}.join(', ')}>"
150
149
  end
151
-
150
+
152
151
  # ::nodoc::
153
152
  # @private
154
153
  def to_s
155
154
  @to_s ||= "<CMU::Person \"#{self.send(:name)} (#{self.send(:andrew_id)})\">"
156
- end
155
+ end
157
156
  end
158
157
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cmu_person
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,27 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-22 00:00:00.000000000 Z
12
+ date: 2012-05-07 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
14
30
  - !ruby/object:Gem::Dependency
15
31
  name: redcarpet
16
- requirement: &70290382060060 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
17
33
  none: false
18
34
  requirements:
19
35
  - - ! '>='
@@ -21,10 +37,15 @@ dependencies:
21
37
  version: '0'
22
38
  type: :development
23
39
  prerelease: false
24
- version_requirements: *70290382060060
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
25
46
  - !ruby/object:Gem::Dependency
26
47
  name: rspec
27
- requirement: &70290382059580 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
28
49
  none: false
29
50
  requirements:
30
51
  - - ! '>='
@@ -32,10 +53,15 @@ dependencies:
32
53
  version: '0'
33
54
  type: :development
34
55
  prerelease: false
35
- version_requirements: *70290382059580
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
36
62
  - !ruby/object:Gem::Dependency
37
63
  name: yard
38
- requirement: &70290382059120 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
39
65
  none: false
40
66
  requirements:
41
67
  - - ! '>='
@@ -43,10 +69,15 @@ dependencies:
43
69
  version: '0'
44
70
  type: :development
45
71
  prerelease: false
46
- version_requirements: *70290382059120
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
47
78
  - !ruby/object:Gem::Dependency
48
79
  name: net-ldap
49
- requirement: &70290382058640 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
50
81
  none: false
51
82
  requirements:
52
83
  - - ! '>='
@@ -54,7 +85,12 @@ dependencies:
54
85
  version: '0'
55
86
  type: :runtime
56
87
  prerelease: false
57
- version_requirements: *70290382058640
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
58
94
  description: This tool is used to search Carnegie Mellon's LDAP directory. Provide
59
95
  an Andrew ID and this will automatically parse the results and return them in a
60
96
  readable format.
@@ -65,6 +101,7 @@ extra_rdoc_files: []
65
101
  files:
66
102
  - .gitignore
67
103
  - .rspec
104
+ - .travis.yml
68
105
  - Gemfile
69
106
  - Gemfile.lock
70
107
  - LICENSE
@@ -95,8 +132,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
132
  - !ruby/object:Gem::Version
96
133
  version: '0'
97
134
  requirements: []
98
- rubyforge_project: cmu_person
99
- rubygems_version: 1.8.15
135
+ rubyforge_project:
136
+ rubygems_version: 1.8.23
100
137
  signing_key:
101
138
  specification_version: 3
102
139
  summary: A simple interface for searching CMU LDAP directory