def create_challenge()

in source/backend/chalicelib/framework.py [0:0]


def create_challenge():
    blueprint.log.debug('create_challenge')
    client_metadata = blueprint.current_request.json_body
    # Validating client metadata input
    if 'imageWidth' not in client_metadata or 'imageHeight' not in client_metadata:
        raise BadRequestError('Missing imageWidth and imageHeight')
    try:
        int(client_metadata['imageWidth'])
    except ValueError:
        raise BadRequestError('Invalid imageWidth')
    try:
        int(client_metadata['imageHeight'])
    except ValueError:
        raise BadRequestError('Invalid imageHeight')
    blueprint.log.debug('client_metadata: %s', client_metadata)
    # Saving challenge on DynamoDB table
    challenge = dict()
    challenge_id = str(uuid.uuid1())
    challenge['id'] = challenge_id
    challenge['token'] = _jwt_manager.get_jwt_token(challenge_id)
    challenge['type'] = _challenge_type_selector_func[0](client_metadata)
    challenge['params'] = _challenge_params_funcs[challenge['type']](client_metadata)
    blueprint.log.debug('challenge: %s', challenge)
    _table.put_item(Item=challenge)
    return challenge