Make term parameter easier to use
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
615aa3f95f
commit
a7d3a4e989
18
lib/ldap.ts
18
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<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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue