1
type Github = {
2
token: string;
3
};
4
/**
5
* List organization memberships for the authenticated user
6
*
7
*/
8
export async function main(
9
auth: Github,
10
state: "active" | "pending" | undefined,
11
per_page: string | undefined,
12
page: string | undefined
13
) {
14
const url = new URL(`https://api.github.com/user/memberships/orgs`);
15
for (const [k, v] of [
16
["state", state],
17
["per_page", per_page],
18
["page", page],
19
]) {
20
if (v !== undefined && v !== "") {
21
url.searchParams.append(k, v);
22
}
23
24
const response = await fetch(url, {
25
method: "GET",
26
headers: {
27
Authorization: "Bearer " + auth.token,
28
},
29
body: undefined,
30
});
31
if (!response.ok) {
32
const text = await response.text();
33
throw new Error(`${response.status} ${text}`);
34
35
return await response.json();
36
37