예제 #1
0
    def create_room():
        '''
        :return: if successful - True, room object; else - False, {}, message

        # return: response message, either success or failure which holds a room object with the following fields:
        # queue - dictionary/json object with pending songs
        # history - dictionary/json object with played songs
        # searchToken - search token (TODO)
        # accessToken - access token (TODO)
        # master - id of creator of room (TODO)
        # users - list with user ids and their votes
        # return json response with room if it's created, otherwise empty object and a failure message
        '''

        userId = DBUtils.generateUniqueId(Purpose.USER)
        token = SecurityUtils.generateToken()
        cookie = SecurityUtils.generateCookie(userId, token)
        spotify_search_token = TokenModerator.get_client_credentials_token()
        youtube_key = TokenModerator.get_youtube_search_key()

        room_obj = {
            # '_id': DBUtils.generateUniqueId(Purpose.ROOM),
            '_id': DBUtils.generateFourSymbolId(),
            'master': {userId: token},
            'SpotifySearchToken': spotify_search_token,
            'YoutubeSearchToken': youtube_key,
            'head': None,
            'queue': {},
            'history': {}, # played songs
            'users': {
                userId:{
                'nickname': 'Master',
                'token': token,
                'IP': "localhost",
                'songs': {} #master does not have 'blocked' field on purpose
                }
            },
            'blocked_members':{}
        }
        #@think is it ok to return values as head, users, master, _id as those are not needed

        result = DBUtils.create_room(room_obj)

        # cookie to identify the master
        room_obj.update({'MasterCookie': cookie})
        if result:
            return True, room_obj, None
        else:
            msg = 'Room was not created'
            return False, {}, msg
    def create_room(self, room_number):
        room_obj = {
            'id': room_number,
            'searchToken': '', # TODO - add script to acquire token
            'accessToken': '', # TODO - add script to acquire token
            'queue': {},
            'history': {}, # played songs
            'users': [],
            'master': '' # TODO - add master's URL
        }

        result, room = DBUtils.create_room(room_obj)
        if result:
            return True, room, None
        else:
            msg = 'Room was not created, please try another ID'
            return False, {}, msg