Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 7af5da6

Browse files
modify token handle logic
1 parent 972279a commit 7af5da6

File tree

4 files changed

+24
-23
lines changed

4 files changed

+24
-23
lines changed

‎common/auth.ts‎

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,31 @@
1+
import { createZoomError } from "./error.js";
12
import { TokenSchema } from "./types.js";
2-
import { zoomRequest } from "./util.js";
3+
import { parseResponseBody,zoomRequest } from "./util.js";
34

45
export async function getAccessToken() {
56
let accountId = process.env.ZOOM_ACCOUNT_ID
67
? process.env.ZOOM_ACCOUNT_ID
78
: "";
9+
let clientId = process.env.ZOOM_CLIENT_ID ? process.env.ZOOM_CLIENT_ID : "";
10+
let clientSecret = process.env.ZOOM_CLIENT_SECRET
11+
? process.env.ZOOM_CLIENT_SECRET
12+
: "";
813

914
let authUrl = `https://zoom.us/oauth/token?grant_type=account_credentials&account_id=${accountId}`;
1015

11-
const key = `Basic ${refreshToken()}`;
12-
const response = await zoomRequest(authUrl, {
16+
const response = await fetch(authUrl, {
1317
method: "POST",
14-
headers: { Authorization: key },
18+
headers: {
19+
Authorization: `Basic ${generateBasicAuth(clientId, clientSecret)}`,
20+
},
1521
});
16-
return TokenSchema.parse(response);
17-
}
1822

19-
functionrefreshToken(): string{
20-
letclientId=process.env.ZOOM_CLIENT_ID ? process.env.ZOOM_CLIENT_ID : "";
21-
letclientSecret=process.env.ZOOM_CLIENT_SECRET
22-
? process.env.ZOOM_CLIENT_SECRET
23-
: "";
24-
return generateBasicAuth(clientId,clientSecret);
23+
constresponseBody=awaitparseResponseBody(response);
24+
if(!response.ok){
25+
throwcreateZoomError(response.status,responseBody);
26+
}
27+
28+
return TokenSchema.parse(responseBody);
2529
}
2630

2731
function generateBasicAuth(username: string, password: string): string {

‎common/util.ts‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import { getUserAgent } from "universal-user-agent";
22
import { VERSION } from "./version.js";
33
import { createZoomError } from "./error.js";
4+
import { getAccessToken } from "./auth.js";
45

56
type RequestOptions = {
67
method?: string;
78
body?: unknown;
89
headers?: Record<string, string>;
910
};
1011

11-
async function parseResponseBody(response: Response): Promise<unknown> {
12+
exportasync function parseResponseBody(response: Response): Promise<unknown> {
1213
const contentType = response.headers.get("content-type");
1314
if (contentType?.includes("application/json")) {
1415
return response.json();
@@ -22,9 +23,11 @@ export async function zoomRequest(
2223
url: string,
2324
options: RequestOptions = {},
2425
): Promise<unknown> {
26+
const token = (await getAccessToken()).access_token;
2527
const headers: Record<string, string> = {
2628
"Content-Type": "application/json",
2729
"User-Agent": USER_AGENT,
30+
Authorization: `Bearer ${token}`,
2831
...options.headers,
2932
};
3033

‎index.ts‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,19 +50,18 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
5050
if (!request.params.arguments) {
5151
throw new Error("No arguments provided");
5252
}
53-
let token = await getAccessToken();
5453
switch (request.params.name) {
5554
case "create_meeting": {
5655
const args = CreateMeetingOptionsSchema.parse(request.params.arguments);
57-
const result = await createMeeting(args,token.access_token);
56+
const result = await createMeeting(args);
5857
return {
5958
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
6059
};
6160
}
6261

6362
case "list_meetings": {
6463
const args = ListMeetingOptionsSchema.parse(request.params.arguments);
65-
const result = await listMeetings(args,token.access_token);
64+
const result = await listMeetings(args);
6665
return {
6766
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
6867
};

‎operations/meeting.ts‎

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,18 @@ export const ListMeetingOptionsSchema = z.object({
2323
export type CreateMeetingOptions = z.infer<typeof CreateMeetingOptionsSchema>;
2424
export type ListMeetingOptions = z.infer<typeof ListMeetingOptionsSchema>;
2525

26-
export async function createMeeting(
27-
options: CreateMeetingOptions,
28-
token: string,
29-
) {
26+
export async function createMeeting(options: CreateMeetingOptions) {
3027
const response = await zoomRequest(
3128
`https://api.zoom.us/v2/users/me/meetings`,
3229
{
3330
method: "POST",
3431
body: options,
35-
headers: { Authorization: `Bearer ${token}` },
3632
},
3733
);
3834
return ZoomMeetingSchema.parse(response);
3935
}
4036

41-
export async function listMeetings(options: ListMeetingOptions,token: string) {
37+
export async function listMeetings(options: ListMeetingOptions) {
4238
let url = "https://api.zoom.us/v2/users/me/meetings";
4339
const params = new URLSearchParams();
4440
Object.entries(options).forEach(([key, value]) => {
@@ -51,7 +47,6 @@ export async function listMeetings(options: ListMeetingOptions, token: string) {
5147
}
5248
const response = await zoomRequest(url, {
5349
method: "GET",
54-
headers: { Authorization: `Bearer ${token}` },
5550
});
5651
return ZoomListMeetingsSchema.parse(response);
5752
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /