1111import sys
1212import urllib .parse
1313import urllib .request
14+ import json
1415
15- from hokiestalker import dsml
1616from hokiestalker import parse_addr
1717
18- SEARCH_URL = "https://webapps.middleware.vt.edu/peoplesearch/PeopleSearch?" \
19- "query={0}&dsml-version=2"
20-
18+ SEARCH_URL = "https://apps.middleware.vt.edu/ws/v1/persons/ldap/fuzzysearch?" \
19+ "query={0}"
2120
2221def row (rows , name , data ):
2322 """Return a formatted row for printing."""
@@ -34,6 +33,8 @@ def row(rows, name, data):
3433 for line in data [1 :]:
3534 rows .append ("{0:20s}{1}" .format ('' , line ))
3635
36+ def jhasattr (obj , attr ):
37+ return attr in obj .keys ()
3738
3839def search (query ):
3940 """Search LDAP using the argument as a query. Argument must be
@@ -45,61 +46,61 @@ def search(query):
4546 f = urllib .request .urlopen (r )
4647
4748 has_results = False
48- results = dsml . DSMLParser ( f )
49+ results = json . loads ( f . read () )
4950
5051 for entry in results :
5152 has_results = True
5253
5354 rows = []
5455 names = []
55- if hasattr (entry , 'displayName' ):
56- names .append (entry .displayName )
56+ if jhasattr (entry , 'displayName' ):
57+ names .append (entry .get ( " displayName" )[ 0 ] )
5758
58- if hasattr (entry , 'givenName' ) and hasattr (entry , 'sn' ):
59- if hasattr (entry , 'middleName' ):
59+ if jhasattr (entry , 'givenName' ) and jhasattr (entry , 'sn' ):
60+ if jhasattr (entry , 'middleName' ):
6061 names .append ('{0} {1} {2}' .format (
61- entry .givenName ,
62- entry .middleName ,
63- entry .sn ))
62+ entry .get ( " givenName" )[ 0 ] ,
63+ entry .get ( " middleName" )[ 0 ] ,
64+ entry .get ( "sn" )[ 0 ] ))
6465 else :
6566 names .append ('{0} {1}' .format (
66- entry .givenName ,
67- entry .sn ))
67+ entry .get ( " givenName" )[ 0 ] ,
68+ entry .get ( "sn" )[ 0 ] ))
6869
6970 row (rows , 'Name' , names )
7071
71- if hasattr (entry , 'uid' ):
72- row (rows , 'UID' , entry .uid )
72+ if jhasattr (entry , 'uid' ):
73+ row (rows , 'UID' , entry .get ( " uid" )[ 0 ] )
7374
74- if hasattr (entry , 'uupid' ):
75- row (rows , 'PID' , entry .uupid )
75+ if jhasattr (entry , 'uupid' ):
76+ row (rows , 'PID' , entry .get ( " uupid" )[ 0 ] )
7677
77- if hasattr (entry , 'major' ):
78- row (rows , 'Major' , entry .major )
79- elif hasattr (entry , 'department' ):
80- row (rows , 'Department' , entry .department )
78+ if jhasattr (entry , 'major' ):
79+ row (rows , 'Major' , entry .get ( " major" )[ 0 ] )
80+ elif jhasattr (entry , 'department' ):
81+ row (rows , 'Department' , entry .get ( " department" ) )
8182
82- if hasattr (entry , 'title' ):
83- row (rows , 'Title' , entry .title )
83+ if jhasattr (entry , 'title' ):
84+ row (rows , 'Title' , entry .get ( " title" )[ 0 ] )
8485
85- if hasattr (entry , 'postalAddress' ):
86- row (rows , 'Office' , parse_addr (entry .postalAddress ))
86+ if jhasattr (entry , 'postalAddress' ):
87+ row (rows , 'Office' , parse_addr (entry .get ( " postalAddress" )[ 0 ] ))
8788
88- if hasattr (entry , 'mailStop' ):
89- row (rows , 'Mail Stop' , entry .mailStop )
89+ if jhasattr (entry , 'mailStop' ):
90+ row (rows , 'Mail Stop' , entry .get ( " mailStop" )[ 0 ] )
9091
91- if hasattr (entry , 'telephoneNumber' ):
92- row (rows , 'Office Phone' , entry .telephoneNumber )
92+ if jhasattr (entry , 'telephoneNumber' ):
93+ row (rows , 'Office Phone' , entry .get ( " telephoneNumber" )[ 0 ] )
9394
94- if hasattr (entry , 'localPostalAddress' ):
95+ if jhasattr (entry , 'localPostalAddress' ):
9596 row (rows , 'Mailing Address' , parse_addr (
96- entry .localPostalAddress ))
97+ entry .get ( " localPostalAddress" )[ 0 ] ))
9798
98- if hasattr (entry , 'localPhone' ):
99- row (rows , 'Phone Number' , entry .localPhone )
99+ if jhasattr (entry , 'localPhone' ):
100+ row (rows , 'Phone Number' , entry .get ( " localPhone" )[ 0 ] )
100101
101- if hasattr (entry , 'mailPreferredAddress' ):
102- row (rows , 'Email Address' , entry .mailPreferredAddress )
102+ if jhasattr (entry , 'mailPreferredAddress' ):
103+ row (rows , 'Email Address' , entry .get ( " mailPreferredAddress" )[ 0 ] )
103104
104105 print ("\n " .join (rows ))
105106 print ()
0 commit comments