import os import requests import csv PROJECT_ID = 'prod-lambda-kinesis-to-neo4j' API_TOKEN = os.environ.get('SENTRY_API_TOKEN') def download_issues(target_filename): with open(target_filename, 'w', encoding='utf-8') as csvfile: fieldnames = ['type', 'title', 'count', 'firstSeen', 'lastSeen', 'logger', 'metadata'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames, extrasaction='ignore') writer.writeheader() url = 'https://sentry.io/api/0/projects/the-orchard/{0}/issues/'.format(PROJECT_ID) downloaded_links = set() while True: if url in downloaded_links: break response = requests.get( url, headers={'Authorization': 'Bearer {TOKEN}'.format(TOKEN=API_TOKEN)}) downloaded_links.add(url) data = response.json() for event in data: writer.writerow(dict(event)) link = response.headers.get('Link') if link and '"next"' in link: print(f"Getting next page... {link}") url = link.split()[4][1:-2] else: break if __name__ == '__main__': download_issues('sentry_data.csv')