def upload_to_google(service, filename, folder_id, log): for num in range(max_upload_retries): try: log.info('Uploading file to google "{file}"'.format(file=filename)) metadata = { 'name': filename, 'mimeType': Google.mime_types['json'], 'parents': [folder_id], 'supportsTeamDrives': True, } media = MediaFileUpload(filename, mimetype=Google.mime_types['json'], resumable=True) http = service.files().create(body=metadata, media_body=media, supportsTeamDrives=True, fields='id') response = Google.call_api(http, log) log.info( 'Successfully uploaded file: "{filename}" (ID: {id})'.format( filename=filename, id=response['id'])) return except: log.error('Google upload failed for some reason:') log.error(traceback.format_exc()) sleep(5) continue log.error("Google upload failed!")
def generate_calendar_audit_report(service, log): log.info("Querying calendar audit data...") # Result will likely be long / paginated. results = list() page_token = None num_pages = 0 while True: http = service.activities().list(pageToken=page_token, userKey='all', applicationName='calendar') response = Google.call_api(http, log) activities = response.get('items', []) if len(activities) > 0: results.extend(activities) num_pages += 1 page_token = response.get('nextPageToken', None) if page_token is None: break log.info("Downloaded {a} calendar audit entries ({b} pages)".format( a=len(results), b=num_pages)) return results
def verify_target_google_folder(service, id, log): http = service.files().get(fileId=id, fields='id,mimeType,name,webViewLink,parents', supportsTeamDrives=True) folder = Google.call_api(http, log=log) if folder is None or folder['mimeType'] != Google.mime_types['folder']: log.error( "Error: Could not find any contents of folder ID: {0}".format(id)) exit(1) log.info("Valid folder ID: {id} ({name})".format(id=id, name=folder['name']))