Skip to content

Instantly share code, notes, and snippets.

@bradgignac
Created February 27, 2015 04:25
Show Gist options
  • Save bradgignac/ce363f966985aff2dffd to your computer and use it in GitHub Desktop.
Save bradgignac/ce363f966985aff2dffd to your computer and use it in GitHub Desktop.
Dashboard
import argparse
import csv
from datetime import date, timedelta
from itertools import groupby
import requests
parser = argparse.ArgumentParser(description="Generate dashboard graph.")
parser.add_argument('domain', type=str, help="Mailgun domain")
parser.add_argument('key', type=str, help="Mailgun API key")
args = parser.parse_args()
events = ['delivered', 'dropped', 'webhook']
start_date = date.today() - timedelta(days=30)
url = 'https://api.mailgun.net/v2/{0}/stats'.format(args.domain)
auth = ('api', args.key)
params = {'event': events, 'start-date': start_date.isoformat()}
res = requests.get(url, auth=auth, params=params)
stats = res.json()
items = stats['items']
with open('dashboard.csv', 'wb') as f:
w = csv.DictWriter(f, ['created_at', 'delivered', 'dropped', 'webhook'])
w.writeheader()
for k, g in groupby(items, lambda r: r['created_at']):
row = dict((e['event'], e['total_count']) for e in g)
row['created_at'] = k
w.writerow(row)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment