Exemple #1
0
def get(request):
    if not request.event["cognitoIdentityId"]:
        raise errors.ForbiddenRequestError('The credentials used did not contain Cognito identity information')

    account = account_utils.get_account_for_identity(request.event["cognitoIdentityId"])
    if not account:
        raise errors.ClientError("No account found for '{}'".format(request.event["cognitoIdentityId"]))

    if account.get('AccountBlacklisted'):
        raise errors.ForbiddenRequestError('The account is blacklisted')

    response = account_utils.get_account_table().get_item(Key = { 'AccountId': account['AccountId'] }, ConsistentRead = False)

    if not 'Item' in response:
        raise errors.ClientError("No account found for '{}'".format(account['AccountId']))

    return account_utils.convert_account_from_dynamo_to_player_model(response['Item'])
Exemple #2
0
def put(request, UpdateAccountRequest):
    if not request.event["cognitoIdentityId"]:
        raise errors.ForbiddenRequestError(
            'The credentials used did not contain Cognito identity information'
        )

    account_utils.validate_account_update_request(UpdateAccountRequest)

    account = account_utils.get_account_for_identity(
        request.event["cognitoIdentityId"])

    if not account:
        account = {
            'AccountId': str(uuid.uuid4()),
            'CognitoIdentityId': request.event["cognitoIdentityId"]
        }

        if 'PlayerName' in UpdateAccountRequest:
            # IndexedPlayerName and PlayerNameSortKey are used to search accounts by name, case insensitive.  See accountsearch.py
            account['PlayerName'] = UpdateAccountRequest['PlayerName']
            account['IndexedPlayerName'] = UpdateAccountRequest[
                'PlayerName'].lower()
            account['PlayerNameSortKey'] = randint(
                1, account_utils.get_name_sort_key_count())

        account_utils.create_account(account)
        return account_utils.convert_account_from_dynamo_to_player_model(
            account)
    else:
        if account.get('AccountBlacklisted'):
            raise errors.ForbiddenRequestError('The account is blacklisted')

        updateRequest = {'AccountId': account['AccountId']}

        if 'PlayerName' in UpdateAccountRequest:
            # IndexedPlayerName and PlayerNameSortKey are used to search accounts by name, case insensitive.  See accountsearch.py
            updateRequest['PlayerName'] = UpdateAccountRequest['PlayerName']
            updateRequest['IndexedPlayerName'] = UpdateAccountRequest[
                'PlayerName'].lower()
            updateRequest['PlayerNameSortKey'] = randint(
                1, account_utils.get_name_sort_key_count())

        result = account_utils.update_account(updateRequest)
        return account_utils.convert_account_from_dynamo_to_player_model(
            result)
def ensure_survey_active_from_metadata(survey_metadata, survey_id=None):
    cur_time = int(time.time())
    if survey_metadata.get('published') != 1 or cur_time < survey_metadata[
            'activation_start_time'] or (
                survey_metadata.get('activation_end_time') is not None
                and cur_time > survey_metadata.get('activation_end_time')):
        raise errors.ForbiddenRequestError(
            'Survey is not active for survey_id: [{}]'.format(
                survey_id if survey_id else survey_metadata['survey_id']))
Exemple #4
0
def get(request, survey_id, submission_id):
    submission = survey_common.get_answer_submission(survey_id, submission_id)
    if submission is None:
        raise errors.ClientError('No survey found for survey_id: [{}], submission_id: [{}]'.format(survey_id, submission_id))

    user_id = submission['user_id']

    if user_id != request.event["cognitoIdentityId"]:
        raise errors.ForbiddenRequestError("Player didn't submit this submission")

    del submission['user_id']

    return submission