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