Separates utility and helper functions, as well as constant values (e.g. base URLs), in dedicated files, apart from tools files.
54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
from typing import Annotated, Optional
|
|
|
|
from arcade.sdk import ToolContext, tool
|
|
from arcade.sdk.auth import Zoom
|
|
|
|
from arcade_zoom.tools.utils import _handle_zoom_api_error, _send_zoom_request
|
|
|
|
|
|
@tool(
|
|
requires_auth=Zoom(
|
|
scopes=["meeting:read:list_upcoming_meetings"],
|
|
)
|
|
)
|
|
async def list_upcoming_meetings(
|
|
context: ToolContext,
|
|
user_id: Annotated[
|
|
Optional[str],
|
|
"The user's user ID or email address. Defaults to 'me' for the current user.",
|
|
] = "me",
|
|
) -> Annotated[dict, "List of upcoming meetings within the next 24 hours"]:
|
|
"""List a Zoom user's upcoming meetings within the next 24 hours."""
|
|
endpoint = f"/users/{user_id}/upcoming_meetings"
|
|
|
|
response = await _send_zoom_request(context, "GET", endpoint)
|
|
|
|
if not (200 <= response.status_code < 300):
|
|
_handle_zoom_api_error(response)
|
|
|
|
response_json = response.json()
|
|
return dict(response_json)
|
|
|
|
|
|
@tool(
|
|
requires_auth=Zoom(
|
|
scopes=["meeting:read:invitation"],
|
|
)
|
|
)
|
|
async def get_meeting_invitation(
|
|
context: ToolContext,
|
|
meeting_id: Annotated[
|
|
str,
|
|
"The meeting's numeric ID (as a string).",
|
|
],
|
|
) -> Annotated[dict, "Meeting invitation string"]:
|
|
"""Retrieve the invitation note for a specific Zoom meeting."""
|
|
endpoint = f"/meetings/{meeting_id}/invitation"
|
|
|
|
response = await _send_zoom_request(context, "GET", endpoint)
|
|
|
|
if not (200 <= response.status_code < 300):
|
|
_handle_zoom_api_error(response)
|
|
|
|
response_json = response.json()
|
|
return dict(response_json)
|