def patch_handler(event: Dict[str, Any], context):
    data = json.loads(event['body'])
    errors = []
    if 'year' not in data:
        errors.append("Missing required year field.")
    if 'actors' not in data:
        errors.append("Missing required actors field.")
    if 'plot' not in data:
        errors.append("Missing required plot field.")

    if len(errors) > 0:
        logging.error(f"Validation Failed for request: {event['body']}")
        return {
            "statusCode": 400,
            "body": json.dumps({"errors": errors})
        }

    title = event['pathParameters']['title']
    headers = event['headers']
    user_id = parse_user_id(headers['authorization'][len('Bearer '):])

    response = update_movie(user_id, title, int(data['year']), data['plot'], data['actors'])
    logger.info(f"Update movies pathParameters keys: {event['pathParameters'].keys()}")
    logger.info(f"Update response keys: {response.keys()}")

    return {
        "statusCode": 204,
        "body": json.dumps({"item": response['Attributes']})
    }
Esempio n. 2
0
def put_handler(event: Dict[str, Any], context):
    data = json.loads(event['body'])
    errors = []
    if 'title' not in data:
        errors.append("Missing required text field.")
    if 'year' not in data:
        errors.append("Missing required year field.")
    if 'rating' not in data:
        errors.append("Missing required rating field")

    if len(errors) > 0:
        logging.error(f"Validation Failed for request: {event['body']}")
        return {"statusCode": 400, "body": json.dumps({"errors": errors})}

    headers = event['headers']
    user_id = parse_user_id(headers['authorization'][len('Bearer '):])

    movie_item = put_movie(user_id, data['title'], int(data['year']),
                           data['plot'], int(data['rating']))
    # logging.info(f"Add {json.dumps(item)}")
    # write the todo to the database
    # response = table.put_item(Item=item, ReturnValues='ALL_OLD')

    # logging.info(f"PutItem response: {response['ResponseMetadata'].keys()}")
    # PutItem response: dict_keys(['RequestId', 'HTTPStatusCode', 'HTTPHeaders', 'RetryAttempts']

    # create a response
    response = {"statusCode": 200, "body": json.dumps({'item': movie_item})}

    return response
def delete_handler(event: Dict[str, Any], context):
    title = event['pathParameters']['title']
    headers = event['headers']
    user_id = parse_user_id(headers['authorization'][len('Bearer '):])

    _ = delete_movie(user_id, title)
    delete_movie_image(user_id, title)

    return {"statusCode": 204, "body": json.dumps({})}
def post_handler(event: Dict[str, Any], context):
    title = event['pathParameters']['title']
    headers = event['headers']
    user_id = parse_user_id(headers['authorization'][len('Bearer '):])

    response = generate_upload_url(user_id, title)
    update_movie_image(user_id, title)

    # create a response
    return {
        "statusCode": 200,
        "body": json.dumps(response)
    }
Esempio n. 5
0
def get_handler(event: Dict[str, Any], context):
    headers = event['headers']
    user_id = parse_user_id(headers['authorization'][len('Bearer '):])

    movies = get_movies(user_id)
    logger.info(f"First movie: {movies[0]}")
    for movie in movies:
        if "movie" in movie['info']:
            movie['info']['movie'] = generate_presigned_url(
                user_id, movie['title'])

    logger.info(f"Get movies: {movies}")

    return {
        "statusCode": 200,
        "body": json.dumps({"items": movies}, cls=DecimalEncoder)
    }
Esempio n. 6
0
def test_parse_user_id_throw_error():
    with pytest.raises(ValueError):
        parse_user_id(None)
Esempio n. 7
0
def test_parse_user_id():
    jwt_token = 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IkJLeU1SSldYQW1QenlMZ25TTWM5QyJ9.eyJpc3MiOiJodHRwczovL2Rldi1jY2E0Y203Yy5ldS5hdXRoMC5jb20vIiwic3ViIjoiYXV0aDB8NjAwZDMyMWE1MjM4ZmIwMDY5NWY2NWUyIiwiYXVkIjoiUTZkb0ZxTEk1WTBtOVhyQmYwRjJWdklDQWpNZ3hSSkgiLCJpYXQiOjE2MTE1MTE1NzQsImV4cCI6MTYxMTk0MzU3NCwiYXRfaGFzaCI6InE0YWVFZzVNT1V6dmY1ZUxLMjdHWVEiLCJub25jZSI6IjM2VXJCYmtxZzd4RWIxZ05HdE5LUm9FSWtWTy1zVWlVIn0.BrUeEieoBS-kIVPjBcGkJm3_jPQhJD8qE4eL9L4CNudakvpMRliXn26tnaYh2lhth7cfkTwxLw2BRFkWfJq4gOHJ98GZlDXxYLneygWNFT86jHkYOiLhJHkbcbEP4gB7Hg5yvUK-K0qH2JPp0ymP7-NyiLkC3rlY8Rulrd23Bx-ZC8ZcTnWUFfD8ZguWyfbLDR6miFFqS8Xwz9RQaes3eJpM8gaO0s6GIqDYGLVMv_1-1LXWA4DGXTcANkEQmpSiwuztV-2JHh7wlVeC7kbkxgiUXU-hO1ZWfZdZrS-h7zVGlDP-5AyQP8rpaTnmctL29BEEtlLx-fCWauUUZUaV_A'

    assert parse_user_id(jwt_token) == 'auth0|600d321a5238fb00695f65e2'