Work with Cvent API for IDAA members.
This commit is contained in:
@@ -135,7 +135,7 @@ def get_contact_list(external_id: str=None, email: str=None):
|
|||||||
response_data = resp.json()
|
response_data = resp.json()
|
||||||
log.debug(json.dumps(response_data, indent=2, default=str))
|
log.debug(json.dumps(response_data, indent=2, default=str))
|
||||||
|
|
||||||
if 'message' in response_data and response_data['message'] == 'Too Many Requests for Cvent API': return False
|
if 'message' in response_data and response_data['message'] == 'Too Many Requests': return False
|
||||||
|
|
||||||
return response_data
|
return response_data
|
||||||
|
|
||||||
@@ -185,11 +185,47 @@ def get_recent_contact_list(
|
|||||||
resp = requests.get(url=uri, headers=api['headers'], params=params)
|
resp = requests.get(url=uri, headers=api['headers'], params=params)
|
||||||
|
|
||||||
response_data = resp.json()
|
response_data = resp.json()
|
||||||
log.debug(json.dumps(response_data, indent=2, default=str))
|
# log.debug(json.dumps(response_data, indent=2, default=str))
|
||||||
|
|
||||||
if 'message' in response_data and response_data['message'] == 'Too Many Requests for Cvent API': return False
|
cvent_contact_list = response_data.get('data')
|
||||||
|
|
||||||
return response_data
|
next_token = None
|
||||||
|
if 'paging' in response_data:
|
||||||
|
next_token = response_data.get('paging').get('nextToken')
|
||||||
|
log.debug(json.dumps(response_data.get('paging'), indent=2, default=str))
|
||||||
|
|
||||||
|
limit = 0
|
||||||
|
while next_token and limit < 100:
|
||||||
|
limit = limit + 1
|
||||||
|
|
||||||
|
params = {}
|
||||||
|
params['token'] = next_token
|
||||||
|
resp = requests.get(url=uri, headers=api['headers'], params=params)
|
||||||
|
|
||||||
|
response_data = resp.json()
|
||||||
|
# log.debug(json.dumps(response_data, indent=2, default=str))
|
||||||
|
|
||||||
|
if 'message' in response_data and response_data['message'] == 'Too Many Requests':
|
||||||
|
log.warning('Hit Cvent rate limit. Sleeping for .5 seconds...')
|
||||||
|
time.sleep(.5)
|
||||||
|
else:
|
||||||
|
cvent_contact_list = cvent_contact_list + response_data.get('data')
|
||||||
|
|
||||||
|
if 'paging' in response_data:
|
||||||
|
next_token = response_data.get('paging').get('nextToken')
|
||||||
|
log.debug(json.dumps(response_data.get('paging'), indent=2, default=str))
|
||||||
|
|
||||||
|
log.warning('Sleeping for .25 seconds to avoid Cvent rate limit...')
|
||||||
|
time.sleep(.25)
|
||||||
|
else:
|
||||||
|
next_token = None
|
||||||
|
|
||||||
|
# log.debug(json.dumps(cvent_contact_list, indent=2, default=str))
|
||||||
|
# log.debug(json.dumps(response_data, indent=2, default=str))
|
||||||
|
|
||||||
|
if 'message' in response_data and response_data['message'] == 'Too Many Requests': return False
|
||||||
|
|
||||||
|
return cvent_contact_list
|
||||||
# ### END ### API Cvent Methods ### get_recent_contact_list() ###
|
# ### END ### API Cvent Methods ### get_recent_contact_list() ###
|
||||||
|
|
||||||
|
|
||||||
@@ -212,7 +248,7 @@ def get_contact_id(contact_id: str):
|
|||||||
response_data = resp.json()
|
response_data = resp.json()
|
||||||
log.debug(json.dumps(response_data, indent=2, default=str))
|
log.debug(json.dumps(response_data, indent=2, default=str))
|
||||||
|
|
||||||
if 'message' in response_data and response_data['message'] == 'Too Many Requests for Cvent API': return False
|
if 'message' in response_data and response_data['message'] == 'Too Many Requests': return False
|
||||||
|
|
||||||
return response_data
|
return response_data
|
||||||
# ### END ### API Cvent Methods ### get_contact_id() ###
|
# ### END ### API Cvent Methods ### get_contact_id() ###
|
||||||
@@ -257,7 +293,7 @@ def modify_contact_id(contact_id: str, field_list: list=[], custom_field_id: str
|
|||||||
response_data = resp.json()
|
response_data = resp.json()
|
||||||
log.debug(json.dumps(response_data, indent=2, default=str))
|
log.debug(json.dumps(response_data, indent=2, default=str))
|
||||||
|
|
||||||
if 'message' in response_data and response_data['message'] == 'Too Many Requests for Cvent API': return False
|
if 'message' in response_data and response_data['message'] == 'Too Many Requests': return False
|
||||||
|
|
||||||
return response_data
|
return response_data
|
||||||
# ### END ### API Cvent Methods ### modify_contact_id() ###
|
# ### END ### API Cvent Methods ### modify_contact_id() ###
|
||||||
|
|||||||
@@ -31,6 +31,8 @@ async def process_recent_changes(
|
|||||||
to_updated_on: datetime.datetime = None, # for Cvent "lastModified"
|
to_updated_on: datetime.datetime = None, # for Cvent "lastModified"
|
||||||
# type: str = 'created', # created, updated, created_updated
|
# type: str = 'created', # created, updated, created_updated
|
||||||
|
|
||||||
|
return_detail: bool = False,
|
||||||
|
|
||||||
commons: Common_Route_Params = Depends(common_route_params),
|
commons: Common_Route_Params = Depends(common_route_params),
|
||||||
):
|
):
|
||||||
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||||
@@ -45,14 +47,20 @@ async def process_recent_changes(
|
|||||||
to_updated_on = to_updated_on,
|
to_updated_on = to_updated_on,
|
||||||
):
|
):
|
||||||
log.debug(cvent_contact_list_result)
|
log.debug(cvent_contact_list_result)
|
||||||
|
cvent_contact_list = cvent_contact_list_result
|
||||||
|
log.info(f'Found {len(cvent_contact_list)} Cvent contacts')
|
||||||
else:
|
else:
|
||||||
log.warning(f'Something went wrong while trying to get recently created or updated person in Cvent. From Datetime: {from_created_on}')
|
log.warning(f'Something went wrong while trying to get recently created or updated person in Cvent. From Datetime: {from_created_on}')
|
||||||
return mk_resp(data=None, status_code=400, response=commons.response) # Bad Request
|
return mk_resp(data=None, status_code=400, response=commons.response) # Bad Request
|
||||||
|
|
||||||
|
# cvent_contact_list = cvent_contact_list_result.get('data')
|
||||||
|
# cvent_contact_list = cvent_contact_list_result
|
||||||
|
|
||||||
|
# return mk_resp(data=cvent_contact_list, status_message=f'Checked for recent changes in Cvent. Found {len(cvent_contact_list)} Cvent contacts', response=commons.response)
|
||||||
|
|
||||||
log.warning('Sleeping for 1.1 second to avoid Cvent rate limit...')
|
log.warning('Sleeping for 1.1 second to avoid Cvent rate limit...')
|
||||||
time.sleep(1.1)
|
time.sleep(1.1)
|
||||||
|
|
||||||
cvent_contact_list = cvent_contact_list_result.get('data')
|
|
||||||
for cvent_person_contact_obj in cvent_contact_list:
|
for cvent_person_contact_obj in cvent_contact_list:
|
||||||
cvent_person_contact_id = cvent_person_contact_obj.get('id')
|
cvent_person_contact_id = cvent_person_contact_obj.get('id')
|
||||||
log.info(f'Processing Cvent (Person) Contact ID: {cvent_person_contact_id}')
|
log.info(f'Processing Cvent (Person) Contact ID: {cvent_person_contact_id}')
|
||||||
@@ -70,7 +78,10 @@ async def process_recent_changes(
|
|||||||
log.warning('Sleeping for .5 second to avoid Cvent rate limit...')
|
log.warning('Sleeping for .5 second to avoid Cvent rate limit...')
|
||||||
time.sleep(.5)
|
time.sleep(.5)
|
||||||
|
|
||||||
return mk_resp(data=cvent_contact_list_result, status_message=f'Checked for recent changes in Cvent. Created/Updated {len(cvent_contact_list)} Cvent contacts', response=commons.response)
|
if return_detail:
|
||||||
|
return mk_resp(data=cvent_contact_list_result, status_message=f'Checked for recent changes in Cvent. Created/Updated {len(cvent_contact_list)} Cvent contacts', response=commons.response)
|
||||||
|
else:
|
||||||
|
return mk_resp(data=cvent_contact_list, status_message=f'Checked for recent changes in Cvent. Found {len(cvent_contact_list)} Cvent contacts', response=commons.response)
|
||||||
# ### END ### API Cvent ### process_recent_changes() ###
|
# ### END ### API Cvent ### process_recent_changes() ###
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user