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
Exemple #2
0
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)
Exemple #6
0
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))
Exemple #7
0
    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)
Exemple #8
0
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)