def join_room(room_number, nickname, ip): """ Register a new user\n Generates users id, computes it's secret token, saves it in database\n :param room_number:\n :param nickname: \n :param ip: \n :return: json{Status, [UserCookie]} """ #do not allow blocked IP users join blocked_members = DBUtils.get_fields(room_number, ['blocked_members']) if blocked_members is not None: blocked_members = blocked_members[0]['blocked_members'] ips = [] for userId in blocked_members: ips.append(blocked_members[userId]['IP']) if ip in ips: return Response.responseFailure( "Blocked from entering this party room") #get unique ID try: # print("pre user ID") userId = DBUtils.generateUniqueId(Purpose.USER, room_number) # print("after UserID has been assigned") result = userId except ValueError as error: return Response.responseFailure("Room does not exist") token = SecurityUtils.generateToken() user = { userId: { 'nickname': nickname, 'token': token, 'IP': ip, 'songs': {} }, } #save in database result = DBUtils.add_member(room_number, user) if result: #generate user identifiers cookie = SecurityUtils.generateCookie(userId, token) return Response.responseSuccess({ "UserCookie": cookie, "UserId": userId, "SpotifySearchToken": TokenModerator.get_client_credentials_token(), "YoutubeSearchToken": config.TOKEN_KEYS['YOUTUBE_DATA_API'] }) else: return Response.responseFailure("Failed to add new party member")
def get_members(room_number): """ Get the list of all party members\n :param room_number:\n :return: json{Status, users:{party_members_data}} """ fields = ['users'] users = DBUtils.get_fields(room_number, fields) result = False for u in users: result = u['users'] if result is not False: return Response.responseSuccess(result) else: return Response.responseFailure("Failed to retrieve users list.")
def get_blocked_members(room_number): """ Get the list of blocked party members\n :param room_number:\n :return: json{Status, 'blocked_members':{}} """ fields = ['blocked_members'] users = DBUtils.get_fields(room_number, fields) result = False for u in users: result = u['blocked_members'] break if result is not False: return Response.responseSuccess(result) else: return Response.responseFailure( "Failed to retrieve block members list.")