[32788f42] Fix Calendly pagination missing events bug
This commit is contained in:
@@ -51,11 +51,11 @@ def get_calendly_events_raw(api_token: str, start_time: str = None, end_time: st
|
|||||||
'Content-Type': 'application/json'
|
'Content-Type': 'application/json'
|
||||||
}
|
}
|
||||||
|
|
||||||
# Defaults: now to +180 days
|
# Defaults: 2024 to +2 years (broad range to ensure we capture all relevant upcoming)
|
||||||
if not start_time:
|
if not start_time:
|
||||||
start_time = datetime.datetime.utcnow().isoformat() + "Z"
|
start_time = "2024-01-01T00:00:00Z"
|
||||||
if not end_time:
|
if not end_time:
|
||||||
end_time = (datetime.datetime.utcnow() + datetime.timedelta(days=180)).isoformat() + "Z"
|
end_time = (datetime.datetime.utcnow() + datetime.timedelta(days=730)).isoformat() + "Z"
|
||||||
|
|
||||||
# 1. Get current user info to get the user URI
|
# 1. Get current user info to get the user URI
|
||||||
user_url = "https://api.calendly.com/users/me"
|
user_url = "https://api.calendly.com/users/me"
|
||||||
@@ -70,22 +70,34 @@ def get_calendly_events_raw(api_token: str, start_time: str = None, end_time: st
|
|||||||
events_url = "https://api.calendly.com/scheduled_events"
|
events_url = "https://api.calendly.com/scheduled_events"
|
||||||
params = {
|
params = {
|
||||||
'user': user_uri,
|
'user': user_uri,
|
||||||
|
'status': 'active',
|
||||||
'min_start_time': start_time,
|
'min_start_time': start_time,
|
||||||
'max_start_time': end_time,
|
'max_start_time': end_time,
|
||||||
'status': 'active'
|
'count': 100
|
||||||
}
|
}
|
||||||
|
|
||||||
events_response = requests.get(events_url, headers=headers, params=params)
|
all_events = []
|
||||||
if not events_response.ok:
|
url = events_url
|
||||||
raise Exception(f"Calendly API Error: {events_response.status_code}")
|
while url:
|
||||||
|
response = requests.get(url, headers=headers, params=params)
|
||||||
|
if not response.ok:
|
||||||
|
raise Exception(f"Calendly API Error: {response.status_code}")
|
||||||
|
|
||||||
events_data = events_response.json()
|
data = response.json()
|
||||||
events = events_data['collection']
|
all_events.extend(data.get('collection', []))
|
||||||
|
|
||||||
|
pagination = data.get('pagination', {})
|
||||||
|
next_page_token = pagination.get('next_page_token')
|
||||||
|
|
||||||
|
if next_page_token:
|
||||||
|
params = {'user': user_uri, 'count': 100, 'page_token': next_page_token, 'status': 'active'}
|
||||||
|
else:
|
||||||
|
url = None
|
||||||
|
|
||||||
raw_results = []
|
raw_results = []
|
||||||
|
|
||||||
# 3. Get invitees
|
# 3. Get invitees
|
||||||
for event in events:
|
for event in all_events:
|
||||||
event_name = event.get('name', '')
|
event_name = event.get('name', '')
|
||||||
# Filter by event type if provided
|
# Filter by event type if provided
|
||||||
if event_type_name and event_type_name.lower() not in event_name.lower():
|
if event_type_name and event_type_name.lower() not in event_name.lower():
|
||||||
|
|||||||
Reference in New Issue
Block a user