|
|
|
@ -6,11 +6,14 @@ interface MemberItem { |
|
|
|
|
program: string; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// note: the term parameter is different due to the way the LDAP database is structured
|
|
|
|
|
export async function getMembers( |
|
|
|
|
year: string, |
|
|
|
|
term: "w" | "s" | "f" |
|
|
|
|
term: string |
|
|
|
|
): Promise<MemberItem[]> { |
|
|
|
|
if (term !== "winter" && term !== "spring" && term !== "fall") { |
|
|
|
|
throw new Error(`[getMembers] Not a valid term: "${term}"`); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
let members: MemberItem[] = []; |
|
|
|
|
|
|
|
|
|
const url = "ldap://ldap1.csclub.uwaterloo.ca"; |
|
|
|
@ -22,7 +25,7 @@ export async function getMembers( |
|
|
|
|
await client.bind("", ""); |
|
|
|
|
const { searchEntries } = await client.search(searchDN, { |
|
|
|
|
scope: "sub", |
|
|
|
|
filter: `(&(objectClass=member)(term=${term}${year}))`, |
|
|
|
|
filter: `(&(objectClass=member)(term=${term.slice(0, 1)}${year}))`, |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
members = searchEntries |
|
|
|
@ -36,11 +39,10 @@ export async function getMembers( |
|
|
|
|
.sort((item1: MemberItem, item2: MemberItem) => |
|
|
|
|
item1.id.localeCompare(item2.id) |
|
|
|
|
); |
|
|
|
|
}
|
|
|
|
|
// catch (ex) {
|
|
|
|
|
// throw ex;
|
|
|
|
|
// }
|
|
|
|
|
finally { |
|
|
|
|
} finally { |
|
|
|
|
// catch (ex) {
|
|
|
|
|
// throw ex;
|
|
|
|
|
// }
|
|
|
|
|
await client.unbind(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|