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'])
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']))
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