feat: deploy infrastructure + disk/drive, calendar, presentation, workspaces, onboarding, demo user
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
"""Google Calendar API client for VoIdea.
|
||||
|
||||
Uses OAuth access token to create events via Google Calendar API v3.
|
||||
"""
|
||||
|
||||
import logging
|
||||
|
||||
import httpx
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
GOOGLE_CALENDAR_URL = "https://www.googleapis.com/calendar/v3"
|
||||
|
||||
|
||||
class GoogleCalendarClient:
|
||||
def __init__(self, access_token: str):
|
||||
self._access_token = access_token
|
||||
|
||||
async def create_event(
|
||||
self,
|
||||
summary: str,
|
||||
description: str,
|
||||
start_iso: str,
|
||||
end_iso: str,
|
||||
**kwargs,
|
||||
) -> bool:
|
||||
async with httpx.AsyncClient() as client:
|
||||
resp = await client.post(
|
||||
f"{GOOGLE_CALENDAR_URL}/calendars/primary/events",
|
||||
headers={
|
||||
"Authorization": f"Bearer {self._access_token}",
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
json={
|
||||
"summary": summary,
|
||||
"description": description,
|
||||
"start": {"dateTime": start_iso, "timeZone": "UTC"},
|
||||
"end": {"dateTime": end_iso, "timeZone": "UTC"},
|
||||
},
|
||||
)
|
||||
if resp.status_code == 200:
|
||||
return True
|
||||
logger.error("Google Calendar create_event failed: %s %s", resp.status_code, resp.text)
|
||||
return False
|
||||
|
||||
async def list_events(self, max_results: int = 10) -> list[dict]:
|
||||
async with httpx.AsyncClient() as client:
|
||||
resp = await client.get(
|
||||
f"{GOOGLE_CALENDAR_URL}/calendars/primary/events",
|
||||
headers={"Authorization": f"Bearer {self._access_token}"},
|
||||
params={"maxResults": max_results, "orderBy": "startTime", "singleEvents": "true"},
|
||||
)
|
||||
if resp.status_code == 200:
|
||||
return resp.json().get("items", [])
|
||||
return []
|
||||
|
||||
async def health_check(self) -> bool:
|
||||
return bool(self._access_token)
|
||||
Reference in New Issue
Block a user