Automate Candidate's Certificate Generation
Last updated
import json
import hmac
import hashlib
import base64
def base64_encode(string):
"""
Removes any `=` used as padding from the encoded string.
"""
encoded = base64.b64encode(string.encode())
encoded = encoded.rstrip(b'=')
return encoded
def generate_url(candidate):
user_id = ""
secret_key = ""
base_id = ""
modifications = [
{ "name": "text_candidate", "text": candidate }
]
# ensure no spaces in json output
encoded = json.dumps(modifications, separators=(',', ':'))
encoded = base64_encode(encoded).decode()
parameters = "{user_id}+{base_id}+{modifications}".format(user_id=user_id, base_id=base_id, modifications=encoded)
signature = hmac.new(secret_key.encode(), parameters.encode(), hashlib.sha256).hexdigest()
url = "https://images.usestencil.com/signed-images/{user_id}/{base_id}.png?modifications={modifications}&s={signature}".format(
base_id=base_id,
user_id=user_id,
modifications=encoded,
signature=signature
)
return url
def lambda_handler(event, context):
# we read the name from the query string
# i.e. https://xxx.amazonaws.com/default/secure_signed_image?name=David
candidate = event["queryStringParameters"]["name"]
url = generate_url(candidate)
resp = {
"url": url
}
return {
'statusCode': 200,
'body': json.dumps(resp)
}