def __init__(self): self.props = {} self.uid = uuid.uuid4() namer = funkybob.RandomNameGenerator(separator=' ') it = iter(namer) self.name = next(it).title() self.dist = Distribution()
def generate_users(): users = [] for i in range(NUM_USERS): gen = iter(funkybob.RandomNameGenerator()) # UserID id = str(uuid.uuid4()) # Username name = next(gen).split('_') numseq = "".join([str(random.randint(0, 9)) for i in range(3)]) username = name[0] + name[1] + numseq # Password password = "".join([str(random.randint(0, 9)) for i in range(6)]) # Email email = name[0] + "".join( [str(random.randint(0, 9)) for i in range(6)]) + "@gmail.com" # FirstName firstname = name[0] # LastName lastname = name[1] # Credit credit = 50 user = { "id": id, "username": username, "password": password, "email": email, "firstname": firstname, "lastname": lastname, "credit": credit } users.append(user) print( f'id={id}, username={username}, password={password}, email={email}, firstname={firstname}, lastname={lastname}' ) return users
async def connect(websocket, path): try: async for message in websocket: CONNECTED.add(websocket) message = message_data.decodeJSON( message) #converts message into Object print( f'[{message.sender}]: {message.message_type} | {message.content}' ) #log if message.recipient != "Server": #echos msg if recipient not server await asyncio.create_task(broadcast(message.encodeJSON())) if message.sender == "Client": #checks if sender is client if message.message_type == "client_connect": print(f'[Client] Connected') elif "dig" in message.content: with open(os.path.join(FILE_DIR, 'turtle.json'), 'r') as db: turtledatabase = json.load(db) turtle = Turtle.jsonToObject( turtledatabase[message.recipient], True) turtleloc = turtle.location x, y, z, rot = turtleloc with open(os.path.join(FILE_DIR, "world.json"), "r") as db: worlddatabase = json.load(db) if message.content == "dig up": del worlddatabase[f"{x},{y+1},{z}"] elif message.content == "dig down": del worlddatabase[f"{x},{y-1},{z}"] elif message.content == "dig front": if rot == 0: z -= 1 elif rot == 90: x += 1 elif rot == 180: z += 1 elif rot == 270: x -= 1 del worlddatabase[f"{x},{y},{z}"] with open(os.path.join(FILE_DIR, 'world.json'), 'w') as db: json.dump(worlddatabase, db, indent=4) else: #thus sender is turtle if not client or server TURTLES[ message. sender] = websocket #adds turtle to current working list of connected turtles if message.message_type == "turtle_connect": print(f'[{message.sender}] Connected') with open(os.path.join(FILE_DIR, 'turtle.json'), 'r') as db: database = json.load(db) if message.sender == "Unnamed": with open(os.path.join(FILE_DIR, 'turtle.json'), 'r') as db: #opens turtle database database = json.load(db) while True: #checks if name matches any existing turtles name = next( iter( funkybob.RandomNameGenerator( members=2, separator='_'))) if name in database.keys(): continue else: break renamecommand = message_data( "Server", "Unnamed", "turtle_command", f"rename {name}") #sends rename command print(renamecommand.encodeJSON()) await websocket.send(renamecommand.encodeJSON()) database[name] = {"location": [0, 0, 0, 0]} with open(os.path.join(FILE_DIR, 'turtle.json'), 'w') as db: #opens turtle database json.dump(database, db, indent=4) else: connectedmessage = message_data( "Server", "Client", "turtle_connect", database[message.sender]) await asyncio.create_task( broadcast(connectedmessage.encodeJSON()) ) #tells client that bot connected database[message.sender]["connected"] = True with open(os.path.join(FILE_DIR, 'turtle.json'), 'w') as db: #changes database to connected json.dump(database, db, indent=4) elif message.message_type == "information": if message.sender == 'Unnamed': #renames unnamed turtle with open(os.path.join(FILE_DIR, 'turtle.json'), 'r') as db: #opens turtle database database = json.load(db) turtle = Turtle.luaJsonToObject(message.content, True) while True: #checks if name matches any existing turtles name = next( iter( funkybob.RandomNameGenerator( members=2, separator='_'))) if name in database.keys(): continue else: break renamecommand = message_data( "Server", "Unnamed", "turtle_command", f"rename {name}") #sends rename command print(renamecommand.encodeJSON()) await websocket.send(renamecommand.encodeJSON()) turtle.label = name #updates turtle object to match database[turtle.label] = turtle.__dict__ database[turtle.label]["connected"] = True with open(os.path.join(FILE_DIR, 'turtle.json'), 'w') as db: #adds turtle to database json.dump(database, db, indent=4) connectedmessage = message_data( "Server", "Client", "turtle_connect", turtle.__dict__) await asyncio.create_task( broadcast(connectedmessage.encodeJSON()) ) #tells client that bot connected else: infomessage = message_data( "Server", "Client", "information", Turtle.information( message)) #sends client the information await asyncio.create_task( broadcast(infomessage.encodeJSON())) elif message.message_type == "map": Turtle.map(message) await asyncio.create_task(broadcast(message.encodeJSON())) elif message.message_type == "query": query = message.content with open(os.path.join(FILE_DIR, 'turtle.json'), 'r') as db: database = json.load(db) if query == "location": locationdata = ' '.join([ str(i) for i in database[message.sender][query] ]).strip() #converts table to space-sep. string result = message_data("Server", message.sender, "turtle_command", f"location {locationdata}") else: result = message_data( "Server", message.sender, "query_response", { "query": query, "response": database[message.sender][query] }) await websocket.send(result.encodeJSON()) elif message.message_type == "error": print(message.content) infomessage = message_data( "Server", "Client", "error", {message.sender: message.content }) #sends client the information await asyncio.create_task( broadcast(infomessage.encodeJSON())) elif message.message_type == "custom_command_response": print(message.content) except Exception as e: print(e) pass finally: print(f'[{message.sender}] Disconnected') CONNECTED.remove(websocket) if websocket in TURTLES.values(): print(f'[{message.sender}] Removed from Active Turtles') del TURTLES[message.sender] dcnotification = message_data("Server", "Client", "turtle_disconnect", message.sender) await asyncio.create_task( broadcast(dcnotification.encodeJSON()) ) #sends notification to client that turtle disconnected with open(os.path.join(FILE_DIR, 'turtle.json'), 'r') as db: #removes connected tag database = json.load(db) database[message.sender]["connected"] = False with open(os.path.join(FILE_DIR, 'turtle.json'), 'w') as db: json.dump(database, db, indent=4)
def get_random_handle(): generator = funkybob.RandomNameGenerator(members=2, separator='-') it = iter(generator) return it.next()
def test_basic(self): generator = funkybob.RandomNameGenerator(members=2, separator='-') it = iter(generator) blah = it.next()
def test_known_fail_3_members(self): generator = funkybob.RandomNameGenerator(members=3, separator='-') it = iter(generator) blah = it.next()