Ejemplo n.º 1
0
    def create_session(cls, slug, mode=None):
        """
        Returns application settings for local.
        """
        game = get_game_by_slug(slug)
        if not game:
            response.status_int = 404
            return {'ok': False, 'msg': 'Game does not exist: %s' % slug}

        if 'canvas' == mode:
            prefix = 'play/%s/' % slug
        else:
            prefix = ''
        mapping_table = 'mapping_table.json'
        if game:
            mapping_table = str(game.mapping_table)

        user = get_current_user()
        game_session_list = GameSessionList.get_instance()
        game_session_id = game_session_list.create_session(user, game)

        StoreList.reset()
        DataShareList.reset()
        GameNotificationKeysList.reset()

        return {
            'ok': True,
            'mappingTable':
            {
                'mappingTableURL': prefix + mapping_table,
                'mappingTablePrefix': prefix + 'staticmax/',
                'assetPrefix': 'missing/'
            },
            'gameSessionId': game_session_id
        }
Ejemplo n.º 2
0
 def set_properties(cls, slug, datashare_id, params=None):
     game = get_game_by_slug(slug)
     datashare = DataShareList.get(game).get(datashare_id)
     if 'joinable' in params:
         try:
             joinable = asbool(params['joinable'])
         except ValueError:
             raise BadRequest('Joinable must be a boolean value')
         datashare.set_joinable(get_current_user(), joinable)
     return {'ok': True}
Ejemplo n.º 3
0
 def set_properties(cls, slug, datashare_id, params=None):
     game = get_game_by_slug(slug)
     datashare = DataShareList.get(game).get(datashare_id)
     if 'joinable' in params:
         try:
             joinable = asbool(params['joinable'])
         except ValueError:
             raise BadRequest('Joinable must be a boolean value')
         datashare.set_joinable(get_current_user(), joinable)
     return {'ok': True}
Ejemplo n.º 4
0
    def compare_and_set_key(cls, datashare_id, key, params=None):
        session = cls._get_gamesession(params)
        datashare = DataShareList.get(session.game).get(datashare_id)

        value = params.get('value')
        token = params.get('token')
        try:
            new_token = datashare.compare_and_set(session.user, key, value, token)
            return {'ok': True, 'data': {'wasSet': True, 'token': new_token}}
        except CompareAndSetInvalidToken:
            return {'ok': True, 'data': {'wasSet': False}}
Ejemplo n.º 5
0
    def create_session(cls, slug, mode=None):
        """
        Returns application settings for local.
        """
        game = get_game_by_slug(slug)
        if not game:
            response.status_int = 404
            return {'ok': False, 'msg': 'Game does not exist: %s' % slug}

        if 'canvas' == mode:
            prefix = 'play/%s/' % slug
        else:
            prefix = ''
        mapping_table = 'mapping_table.json'
        if game:
            mapping_table = str(game.mapping_table)

        user = get_current_user()

        game_session_list = GameSessionList.get_instance()

        if asbool(request.params.get('closeExistingSessions', False)):
            game_session_list.remove_game_sessions(user, game)

        game_session = game_session_list.create_session(user, game)

        # Reset API's (so YAML files are reloaded on a page refresh)
        StoreList.reset()
        DataShareList.reset()
        GameNotificationKeysList.reset()

        return {
            'ok': True,
            'mappingTable':
            {
                'mappingTableURL': prefix + mapping_table,
                'mappingTablePrefix': prefix + 'staticmax/',
                'assetPrefix': 'missing/'
            },
            'gameSessionId': game_session.gamesession_id
        }
Ejemplo n.º 6
0
 def find(cls, slug):
     game = get_game_by_slug(slug)
     username = request.params.get('username')
     datashares = DataShareList.get(game).find(get_current_user(),
                                               username_to_find=username)
     return {
         'ok': True,
         'data': {
             'datashares':
             [datashare.summary_dict() for datashare in datashares]
         }
     }
Ejemplo n.º 7
0
    def compare_and_set_key(cls, datashare_id, key, params=None):
        session = cls._get_gamesession(params)
        datashare = DataShareList.get(session.game).get(datashare_id)

        value = params.get('value')
        token = params.get('token')
        try:
            new_token = datashare.compare_and_set(session.user, key, value,
                                                  token)
            return {'ok': True, 'data': {'wasSet': True, 'token': new_token}}
        except CompareAndSetInvalidToken:
            return {'ok': True, 'data': {'wasSet': False}}
Ejemplo n.º 8
0
    def create_session(cls, slug, mode=None):
        """
        Returns application settings for local.
        """
        game = get_game_by_slug(slug)
        if not game:
            response.status_int = 404
            return {'ok': False, 'msg': 'Game does not exist: %s' % slug}

        if 'canvas' == mode:
            prefix = 'play/%s/' % slug
        else:
            prefix = ''
        mapping_table = 'mapping_table.json'
        if game:
            mapping_table = str(game.mapping_table)

        user = get_current_user()

        game_session_list = GameSessionList.get_instance()

        if (asbool(request.params.get('closeExistingSessions', False))):
            game_session_list.remove_game_sessions(user, game)

        game_session = game_session_list.create_session(user, game)

        # Reset API's (so YAML files are reloaded on a page refresh)
        StoreList.reset()
        DataShareList.reset()
        GameNotificationKeysList.reset()

        return {
            'ok': True,
            'mappingTable': {
                'mappingTableURL': prefix + mapping_table,
                'mappingTablePrefix': prefix + 'staticmax/',
                'assetPrefix': 'missing/'
            },
            'gameSessionId': game_session.gamesession_id
        }
Ejemplo n.º 9
0
 def read(cls, datashare_id, params=None):
     session = cls._get_gamesession(params)
     datashare = DataShareList.get(session.game).get(datashare_id)
     datashare_keys = datashare.get_keys(session.user)
     return {'ok': True, 'data': {'keys': datashare_keys}}
Ejemplo n.º 10
0
 def find(cls, slug):
     game = get_game_by_slug(slug)
     username = request.params.get('username')
     datashares = DataShareList.get(game).find(get_current_user(), username_to_find=username)
     return {'ok': True, 'data': {'datashares': [datashare.summary_dict() for datashare in datashares]}}
Ejemplo n.º 11
0
 def set_key(cls, datashare_id, key, params=None):
     session = cls._get_gamesession(params)
     datashare = DataShareList.get(session.game).get(datashare_id)
     value = params.get('value')
     new_token = datashare.set(session.user, key, value)
     return {'ok': True, 'data': {'token': new_token}}
Ejemplo n.º 12
0
 def leave(cls, slug, datashare_id):
     game = get_game_by_slug(slug)
     DataShareList.get(game).leave_datashare(get_current_user(), datashare_id)
     return {'ok': True}
Ejemplo n.º 13
0
 def join(cls, slug, datashare_id):
     game = get_game_by_slug(slug)
     datashare = DataShareList.get(game).get(datashare_id)
     datashare.join(get_current_user())
     return {'ok': True, 'data': {'users': datashare.users}}
Ejemplo n.º 14
0
 def create(cls, slug):
     game = get_game_by_slug(slug)
     datashare = DataShareList.get(game).create_datashare(get_current_user())
     return {'ok': True, 'data': {'datashare': datashare.summary_dict()}}
Ejemplo n.º 15
0
 def remove_all(cls, slug):
     game = get_game_by_slug(slug)
     if game is None:
         raise NotFound('No game with slug %s' % slug)
     DataShareList.get(game).remove_all()
     return {'ok': True }
Ejemplo n.º 16
0
 def set_key(cls, datashare_id, key, params=None):
     session = cls._get_gamesession(params)
     datashare = DataShareList.get(session.game).get(datashare_id)
     value = params.get('value')
     new_token = datashare.set(session.user, key, value)
     return {'ok': True, 'data': {'token': new_token}}
Ejemplo n.º 17
0
 def read_key(cls, datashare_id, key, params=None):
     session = cls._get_gamesession(params)
     datashare = DataShareList.get(session.game).get(datashare_id)
     datashare_key = datashare.get(session.user, key)
     return {'ok': True, 'data': datashare_key}
Ejemplo n.º 18
0
 def remove_all(cls, slug):
     game = get_game_by_slug(slug)
     if game is None:
         raise NotFound('No game with slug %s' % slug)
     DataShareList.get(game).remove_all()
     return {'ok': True}
Ejemplo n.º 19
0
 def leave(cls, slug, datashare_id):
     game = get_game_by_slug(slug)
     DataShareList.get(game).leave_datashare(get_current_user(),
                                             datashare_id)
     return {'ok': True}
Ejemplo n.º 20
0
 def join(cls, slug, datashare_id):
     game = get_game_by_slug(slug)
     datashare = DataShareList.get(game).get(datashare_id)
     datashare.join(get_current_user())
     return {'ok': True, 'data': {'users': datashare.users}}
Ejemplo n.º 21
0
 def create(cls, slug):
     game = get_game_by_slug(slug)
     datashare = DataShareList.get(game).create_datashare(
         get_current_user())
     return {'ok': True, 'data': {'datashare': datashare.summary_dict()}}
Ejemplo n.º 22
0
 def read_key(cls, datashare_id, key, params=None):
     session = cls._get_gamesession(params)
     datashare = DataShareList.get(session.game).get(datashare_id)
     datashare_key = datashare.get(session.user, key)
     return {'ok': True, 'data': datashare_key}
Ejemplo n.º 23
0
 def read(cls, datashare_id, params=None):
     session = cls._get_gamesession(params)
     datashare = DataShareList.get(session.game).get(datashare_id)
     datashare_keys = datashare.get_keys(session.user)
     return {'ok': True, 'data': {'keys': datashare_keys}}