From bfaa734314a68d926f595f5758be340a4d5782ce Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Tue, 18 Jul 2017 10:01:54 -0400 Subject: [PATCH 1/2] Allow POST requests to endpoint --- dj_elastictranscoder/views.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/dj_elastictranscoder/views.py b/dj_elastictranscoder/views.py index fd38119..c8520e4 100644 --- a/dj_elastictranscoder/views.py +++ b/dj_elastictranscoder/views.py @@ -1,6 +1,7 @@ import json from django.http import HttpResponse, HttpResponseBadRequest +from django.views.decorators.http import require_http_methods from django.views.decorators.csrf import csrf_exempt from django.core.mail import mail_admins @@ -12,17 +13,16 @@ ) @csrf_exempt +@require_http_methods(["GET", "POST"]) def endpoint(request): """ Receive SNS notification """ - try: data = json.loads(request.read().decode('utf-8')) except ValueError: return HttpResponseBadRequest('Invalid JSON') - # handle SNS subscription if data['Type'] == 'SubscriptionConfirmation': subscribe_url = data['SubscribeURL'] @@ -34,7 +34,6 @@ def endpoint(request): mail_admins('Please confirm SNS subscription', subscribe_body) return HttpResponse('OK') - # try: message = json.loads(data['Message']) From a6f49547e1117cf92eb1a4d23a5996118b0e5247 Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Tue, 18 Jul 2017 10:04:58 -0400 Subject: [PATCH 2/2] Auto-confirm SNS subscriptions with requests --- dj_elastictranscoder/views.py | 6 ++++-- setup.py | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/dj_elastictranscoder/views.py b/dj_elastictranscoder/views.py index c8520e4..c6e85ba 100644 --- a/dj_elastictranscoder/views.py +++ b/dj_elastictranscoder/views.py @@ -1,4 +1,5 @@ import json +import requests from django.http import HttpResponse, HttpResponseBadRequest from django.views.decorators.http import require_http_methods @@ -26,13 +27,14 @@ def endpoint(request): # handle SNS subscription if data['Type'] == 'SubscriptionConfirmation': subscribe_url = data['SubscribeURL'] + requests.get(subscribe_url) subscribe_body = """ - Please visit this URL below to confirm your subscription with SNS + This URL will confirm your subscription with SNS. I've already visited it, but you can too! %s """ % subscribe_url mail_admins('Please confirm SNS subscription', subscribe_body) - return HttpResponse('OK') + return HttpResponse('Subscription confirmed') # try: diff --git a/setup.py b/setup.py index 8bffd3a..5c05def 100644 --- a/setup.py +++ b/setup.py @@ -17,6 +17,7 @@ install_requires=[ "django >= 1.8", "boto3 >= 1.1", + "requests", ], classifiers=[ "Intended Audience :: Developers",