예제 #1
0
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!")
예제 #2
0
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
예제 #3
0
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']))