From f1d64798a0364b8efeb660488a3e3ea101460fd4 Mon Sep 17 00:00:00 2001 From: Richard Mathie Date: Mon, 24 Apr 2017 16:28:29 +0100 Subject: [PATCH] starting to hate python3 --- flask_mailgun/api.py | 5 +++-- flask_mailgun/attachment.py | 4 ++-- tests/fixtures/email.py | 4 +++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/flask_mailgun/api.py b/flask_mailgun/api.py index 5f80abe..4731b7c 100644 --- a/flask_mailgun/api.py +++ b/flask_mailgun/api.py @@ -22,7 +22,7 @@ class MailGunAPI(object): def __init__(self, config): self.domain = config['MAILGUN_DOMAIN'] - self.api_key = bytes(config['MAILGUN_API_KEY']) + self.api_key = config['MAILGUN_API_KEY'].encode('utf-8') self.api_url = config.get('MAILGUN_API_URL', MAILGUN_API_URL) self.route = config.get('MAILGUN_ROUTE', 'uploads') @@ -141,8 +141,9 @@ def verify_email(self, email): if timestamp is None or token is None or signature is None: raise MailGunException("Mailbox Error: credential verification failed.", "Not enough parameters") + message = '{}{}'.format(timestamp, token).encode('utf-8') signature_calc = hmac.new(key=self.api_key, - msg=bytes('{}{}'.format(timestamp, token)), + msg=message, digestmod=hashlib.sha256).hexdigest() if signature != signature_calc: raise MailGunException("Mailbox Error: credential verification failed.", "Signature doesn't match") diff --git a/flask_mailgun/attachment.py b/flask_mailgun/attachment.py index 932f127..28664cd 100644 --- a/flask_mailgun/attachment.py +++ b/flask_mailgun/attachment.py @@ -38,7 +38,7 @@ def attachment_decorator(f, email, filename): """Converts a file back into a FileStorage Object""" with open(filename, 'r') as file: attachment = FileStorage(stream=file, - filename=filename) + filename=filename.encode('utf-8')) result = f(email, attachment) return result @@ -90,7 +90,7 @@ class Attachment(object): def __init__(self, filename=None, content_type=None, data=None, disposition=None, headers=None): - self.filename = filename + self.filename = filename.encode('utf-8') self.content_type = content_type self.data = data self.disposition = disposition or 'attachment' diff --git a/tests/fixtures/email.py b/tests/fixtures/email.py index 29ecc8d..9fed2a9 100644 --- a/tests/fixtures/email.py +++ b/tests/fixtures/email.py @@ -24,8 +24,10 @@ def sign_email(email, mailgun): token = random_string(50) timestamp = int(time()) api_key = mailgun.mailgun_api.api_key + message = '{}{}'.format(timestamp, token).encode('utf-8') + signature = hmac.new(key=api_key, - msg=bytes('{}{}'.format(timestamp, token)), + msg=message, digestmod=hashlib.sha256).hexdigest() email.update(dict(token=token, timestamp=timestamp,