RcmEmailAutomation / app /lib /graph /folder_resolver.py
cmoss3's picture
Error handling, confidence scoring, daily brief, deduplicate webhook notifications
0a367ef
Raw
History Blame Contribute Delete
832 Bytes
from app.lib.graph.client import GraphClient
_BASE = "https://graph.microsoft.com/v1.0"
async def resolve_folder_id(client: GraphClient, display_name: str, mailbox_user: str) -> str:
path = f"/users/{mailbox_user}/mailFolders"
params: dict = {"$top": 100}
while path:
data = await client.get(path, params=params)
for folder in data.get("value", []):
if folder["displayName"].lower() == display_name.lower():
return folder["id"]
next_link: str | None = data.get("@odata.nextLink")
if next_link:
path = next_link.removeprefix(_BASE)
params = {}
else:
break
raise ValueError(
f"Mail folder '{display_name}' not found. "
f"Verify it exists as a top-level folder in the monitored mailbox."
)