diff --git a/lib/ldap.ts b/lib/ldap.ts index e083d3dd..a848e61a 100644 --- a/lib/ldap.ts +++ b/lib/ldap.ts @@ -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 { + 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(); } diff --git a/lib/test.ts b/lib/test.ts index 3bf5cad2..e7f60485 100644 --- a/lib/test.ts +++ b/lib/test.ts @@ -1,7 +1,7 @@ import { getMembers } from "./ldap"; const main = async () => { - const members = await getMembers("2020", "w"); + const members = await getMembers("2020", "winter"); console.log(members); };