Skip to content

Instantly share code, notes, and snippets.

View craigderington's full-sized avatar
🚀
Automate Everything

Craig Derington craigderington

🚀
Automate Everything
View GitHub Profile
@craigderington
craigderington / app.py
Created December 13, 2018 19:19
Flask REST Mailgun Webhook v2
@app.route('/api/v1/wh/mg/lead/email/delivered', methods=['POST'])
def lead_email_delivered():
"""
The lead email delivered webhook.
:return: json
"""
if request.method == 'POST':
form_data = {
"message_id": request.form.get('Message-Id', None),
@craigderington
craigderington / verify.py
Created December 13, 2018 19:20
Signature Verification
import hashlib
import hmac
def verify(api_key, token, timestamp, signature):
hmac_digest = hmac.new(key=mailgun_api_key,
msg='{}{}'.format(timestamp, token).encode('utf-8'),
digestmod=hashlib.sha256).hexdigest()
return hmac.compare_digest(signature, hmac_digest)
@craigderington
craigderington / app.py
Created December 13, 2018 19:21
Flask REST Mailgun Webhook v3
try:
lead = db.session.query(Lead).filter(
Lead.email_addr == mg_recipient
).first()
if lead:
email = lead.email
lead_id = lead.id
event = form_data['event']
@craigderington
craigderington / check.py
Created December 13, 2018 19:23
Check our Data
if request.method == 'POST':
form_data = {
"message_id": request.form.get('Message-Id', None),
"x_mail_gun_sid": request.form.get('X-Mailgun-Sid', None),
"domain": request.form.get('domain', 'email.com'),
"event": request.form.get('event', 'delivered'),
"timestamp": request.form.get('timestamp', None),
"recipient": request.form.get('recipient', None),
"signature": request.form.get('signature', None),
@craigderington
craigderington / send_email.py
Last active January 8, 2019 19:30
Sending email with the Python standard library
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
# sender details
sender = 'alias@domain.org'
recipients = ['alias@domain.org', 'email2@domain.com', '3rdrecipients@outloo.com', ]
# create a MIME obj
msg = MIMEMultipart()
from random import randrange
def get_random_ip():
"""
Create a random IP address
:return: ipv4 address
"""
return ".".join(str(randrange(1, 255)) for i in range(4))
#!/usr/bin/env python
import argparse
import csv
import json
from types import *
def main():
@craigderington
craigderington / api.py
Last active January 24, 2019 18:44
Things API reworked with Responder
import responder
import random
import logging
import uuid
from datetime import datetime
from marshmallow import Schema, fields
api = responder.API(
title="ThingsAPI",
@craigderington
craigderington / parse_openaddress.py
Created January 28, 2019 17:00
OpenAddress Data from Local Filesystem Path - Query into MySQL Database
#!.env/bin/python
# -*- coding:utf-8 -*-
import config
import logging
import os
import csv
import sys
import MySQLdb
@craigderington
craigderington / parse_zip_codes.py
Created January 30, 2019 20:45
GeoNames ZipCode data Import to MySQL
#!.env/bin/python
# -*- code: utf-8 -*-
import sys
import csv
import config
import MySQLdb
import logging
log_format = '%(asctime)s %(levelname)s:%(message)s'
logging.basicConfig(