def createGroup(groupname): if not groupname.isalnum(): raise UserError("Invalid Groupname, Must Be Alphanumeric") elif GROUPS.groupnameExists(groupname): raise UserError("Group Exists") group = Group(groupname) GROUPS.addGroup(group) return group.serialize()
def createUser(username): if not username.isalnum(): raise UserError("Invalid Username, Must Be Alphanumeric") elif USERS.usernameExists(username): raise UserError("User Exists") user = User(username) USERS.addUser(user) return user.serialize()
def addUserToGroup(groupname, username): group = GROUPS.getGroup(groupname) if group is None: raise UserError("Missing Group") if not USERS.usernameExists(username): raise UserError("User does not exist") group.addUser(USERS.getUser(username)) return group.serialize()
def decodeMessage(request): message = RequestProtoBuf.Message() try: message.ParseFromString(request.data) except DecodeError: raise UserError("Invaid Message Protocol Buffer") if message.msg is None or message.msg == '': raise UserError("Invaid Message Body") fromUser = USERS.getUser(message.frm) if fromUser is None: raise UserError("Invalid from User") return message.msg, fromUser
def deleteUser(username): if not USERS.usernameExists(username): raise UserError("Missing User") USERS.deleteUser(username) GROUPS.pruneUser(username) return None
def sendGroupMessage(groupname): msg, fromUser = decodeMessage(request) toGroup = GROUPS.getGroup(groupname) if toGroup is None: raise UserError("Missing To Group") message = GroupMessage(fromUser, toGroup, msg) toGroup.receiveMessage(message, USERS) return message.serialize()
def sendDirectMessage(username): msg, fromUser = decodeMessage(request) toUser = USERS.getUser(username) if toUser is None: raise UserError("Missing To User") message = DirectMessage(fromUser, toUser, msg) toUser.receiveMessage(message) return message.serialize()
def listGroups(): query = request.args.get('q') if query: starless = query.replace('*', '') if starless and not starless.isalnum(): raise UserError("Invalid Query") return GROUPS.filter(query).serialize() else: return GROUPS.serialize()
def listMessages(username): user = USERS.getUser(username) if user is None: raise UserError("Missing User") return user.flushMessages()