def lambda_handler()

in src/download_podcast.py [0:0]


def lambda_handler(event, context):
    url = event['podcastUrl']
    bucket = event['bucket']
    content_type = event['audio_type']

    # generate a temp file name to store in S3
    key = 'podcasts/audio/' + id_generator() + "-" + os.path.basename(url)

    try:
        logger.info("downloading from: " + url)

        # Open the url
        stream = urlopen(url)

        s3_object_metadata = {'href': url}

        logger.info("writing to s3://" + bucket + "/" + key)
        s3_client.upload_fileobj(
            Fileobj=stream,
            Bucket=bucket,
            Key=key,
            ExtraArgs={
                "Metadata": s3_object_metadata,
                'ContentType': content_type
            }
        )
        logger.info("done writing to s3://" + bucket + "/" + key)

        # Return the bucket and key the location of the podcast file stored in S3
        return {
            "bucket": bucket,
            "key": key
        }

    # handle errors
    except HTTPError as e:
        logger.error("HTTPError downloading:" + url)
        logger.exception(str(e))
        raise e
    except URLError as e:
        logger.error("URLError downloading:" + url)
        logger.exception(str(e))
        raise e
    except Exception as e:
        logger.error("Unexpected error:")
        logger.exception(str(e))
        raise e