def validate_using_player_account_gem(interface_url, user, cognito_id): client = cgf_service_client.for_url(interface_url, verbose=True, session=boto3._get_default_session()) result = client.navigate('accountinfo', cognito_id).GET() if result.DATA == None: return False return result.DATA[ 'CognitoUsername'] == user # TODO: add support for playername or other attributes
def check_player_account_gem_for_ban(interface_url, user): # get cognito id from identity map cognito_id = identity_validator.get_id_from_user(user) client = cgf_service_client.for_url(interface_url, verbose=True, session=boto3._get_default_session()) result = client.navigate('accountinfo', cognito_id).GET() # ask player account if that player is banned return result.DATA.get('AccountBlacklisted', False)
def get(request): interface_url = cgf_lambda_settings.get_service_url( "CloudGemPlayerAccount_banplayer_1_0_0") if not interface_url: return {"players": ban_handler.get_banned_players()} service_client = cgf_service_client.for_url( interface_url, verbose=True, session=boto3._get_default_session()) result = service_client.navigate('list').GET() return result.DATA
def post(request, user = None): interface_url = cgf_lambda_settings.get_service_url("CloudGemPlayerAccount_banplayer_1_0_0") if not interface_url: return { "status": ban_handler.ban(user) } service_client = cgf_service_client.for_url(interface_url, verbose=True, session=boto3._get_default_session()) result = service_client.navigate('playerban').POST({"id": identity_validator.get_id_from_user(user)}) return result.DATA
def main(message, context): interface_urls = cgf_lambda_settings.list_service_urls() event = message['emitted'] for interface_url in interface_urls: if c.INT_METRICS_LISTENER in interface_url.keys()[0]: service_client = cgf_service_client.for_url(interface_url.values()[0], verbose=True, session=boto3._get_default_session()) source = service_client.navigate('source').GET() if event.get('source', None) == source.name: print "#######Emitting" service_client.navigate('emit').POST(message)
def __send_communicator_broadcast(message): if not __do_communicator_updates(): return interface_url = cgf_lambda_settings.get_service_url("CloudGemWebCommunicator_sendmessage_1_0_0") if not interface_url: print 'Messaging interface not found' return client = cgf_service_client.for_url(interface_url, verbose=True, session=boto3._get_default_session()) try: result = client.navigate('broadcast').POST({"channel": "CloudGemDynamicContent", "message": message}) print 'Got send result {}'.format(result) except Exception as error: raise errors.ClientError('Failed to broadcast {} due to error: {}'.format(message, error))
def get_service_client(self, session: boto3.Session = None, verbose: bool = False) -> cgf_service_client.Path: """ Gets a service client for a stack's service api. Will use repack to pack any non dict responses into generic {'Results': response} Arguments: session: A pre-made boto3 session, otherwise a new session is created verbose: If true, sets the client to be verbose, otherwise only error statements will be logged Returns a cgf_service_client.Path object that can be used to make requests. """ if self._context.config.project_stack_id is None: raise HandledError("Project stack does not exist.") return cgf_service_client.for_url(self.url, session=session, verbose=verbose, repack=True)
def delete(request, user=None): """ Call PlayerAccount to unban the player Player must be a registered uer in the PlayerAccount Gem and Leaderboards must have seen the player via a data request to have a mapping between the user name and the cognition identity (for get_id_from_user) """ print("Handling player unban for {}".format(user)) interface_url = cgf_lambda_settings.get_service_url( "CloudGemPlayerAccount_banplayer_1_0_0") if not interface_url: return {"status": ban_handler.lift_ban(user)} service_client = cgf_service_client.for_url( interface_url, verbose=True, session=boto3._get_default_session()) navigation = service_client.navigate('playerban') cog_id = identity_validator.get_id_from_user(user) if cog_id is None: raise errors.ClientError(UNKNOWN_PLAYER_ERROR_MESSAGE.format(user)) result = navigation.DELETE({"id": cog_id}) return result.DATA
def test_for_url(self, mock_Path): client = cgf_service_client.for_url('http://example.com', A=10, B=20) self.assertIs(client, mock_Path.return_value) mock_Path.assert_called_once_with('http://example.com', A=10, B=20)