aboutsummaryrefslogtreecommitdiffstats
path: root/src/blogc-github-lambda
diff options
context:
space:
mode:
Diffstat (limited to 'src/blogc-github-lambda')
-rw-r--r--src/blogc-github-lambda/lambda_function.py.in32
1 files changed, 22 insertions, 10 deletions
diff --git a/src/blogc-github-lambda/lambda_function.py.in b/src/blogc-github-lambda/lambda_function.py.in
index 8c55402..a6cdc6f 100644
--- a/src/blogc-github-lambda/lambda_function.py.in
+++ b/src/blogc-github-lambda/lambda_function.py.in
@@ -7,8 +7,13 @@
# See the license for details.
#
+from __future__ import print_function
+
from contextlib import closing
-from StringIO import StringIO
+try:
+ from io import StringIO
+except ImportError:
+ from StringIO import StringIO
import base64
import boto3
@@ -19,8 +24,11 @@ import mimetypes
import os
import subprocess
import tarfile
-import urllib2
import shutil
+try:
+ import urllib.request as urllib2
+except ImportError:
+ import urllib2
BLOGC_VERSION = '@PACKAGE_VERSION@'
@@ -48,7 +56,7 @@ def get_tarball(repo_name):
auth = base64.b64encode(GITHUB_AUTH)
request.add_header("Authorization", "Basic %s" % auth)
- with closing(urllib2.urlopen(request)) as fp:
+ with closing(urllib2(request)) as fp:
tarball = fp.read()
rootdir = None
@@ -148,23 +156,23 @@ def sync_s3(src, dest, settings_file):
to_delete.append(filename)
for data in to_upload:
- print 'Uploading file: %s; content-type: "%s"' % (
+ print('Uploading file: %s; content-type: "%s"' % (
data['Key'],
data.get('ContentType'),
- )
+ ))
bucket.put_object(**data)
for filename in to_delete:
- print 'Deleting file:', filename
+ print('Deleting file:', filename)
remote_files[filename].delete()
def blogc_handler(message):
- print 'blogc-github-lambda %s' % BLOGC_VERSION
+ print('blogc-github-lambda %s' % BLOGC_VERSION)
payload = json.loads(message)
if payload['ref'] == 'refs/heads/master':
- print 'Building: %s' % payload['repository']['full_name']
+ print('Building: %s' % payload['repository']['full_name'])
debug = 'DEBUG' in os.environ
env = os.environ.copy()
@@ -195,7 +203,7 @@ def blogc_handler(message):
os.path.join(rootdir, 's3.json'))
else:
- print "Commit not for master branch, skipping: %s" % payload['ref']
+ print("Commit not for master branch, skipping: %s" % payload['ref'])
def api_gateway_response(code, message):
@@ -229,7 +237,11 @@ def api_gateway_handler(event):
if not hmac.compare_digest(digest.hexdigest(), pieces[1]):
return api_gateway_response(400, 'BAD_SIGNATURE')
- blogc_handler(body)
+ try:
+ blogc_handler(body)
+ except Exception as err:
+ return api_gateway_response(500, 'ERROR: %s' % err)
+
return api_gateway_response(201, 'ACCEPTED')