class RequestManager: def __init__(self): self.__systemManager = SystemManager() def processRequest(self, request): if not type(request) is dict: return Messages.invalidRequest elif not 'type' in request: return Messages.invalidRequest elif not 'login' in request or not 'password' in request: return Messages.invalidRequest elif request['type'] == 'REGISTER': if not self.__systemManager.createClient(request['login'], request['password']): return Messages.loginExists else: return Messages.userCreated elif not self.__systemManager.authenticate(request['login'], request['password']): return Messages.invalidLoginOrPassWord elif request['type'] == 'AUTHENTICATE': return Messages.authOk elif request['type'].startswith('GET_ITEM'): if not 'itemId' in request: return Messages.invalidRequest answer = False if request['type'] == 'GET_ITEM_NAME': answer = self.__systemManager.getItemName( request['login'], request['itemId']) elif request['type'] == 'GET_ITEM_DATA': answer = self.__systemManager.getItemData( request['login'], request['itemId']) elif request['type'] == 'GET_ITEM_TYPE': answer = self.__systemManager.getItemType( request['login'], request['itemId']) elif request['type'] == 'GET_ITEM_PARENT': answer = self.__systemManager.getItemParentId( request['login'], request['itemId']) if type(answer) is bool and not answer: return Messages.getError else: return dict(Messages.getOK, **{'answer': answer}) elif request['type'] == 'CREATE_FOLDER': if not 'where' in request: return Messages.invalidRequest if not 'name' in request: return Messages.invalidRequest createdId = self.__systemManager.createFolder( request['login'], request['name'], request['where']) if type(createdId) is bool and not createdId: return Messages.invalidRequest return Messages.folderCreated elif request['type'] == 'CREATE_FILE': if not 'where' in request: return Messages.invalidRequest if not 'name' in request: return Messages.invalidRequest if not 'data' in request: return Messages.invalidRequest createdId = self.__systemManager.createFile( request['login'], request['name'], request['data'], request['where']) if type(createdId) is bool and not createdId: return Messages.invalidRequest return Messages.fileCreated elif request['type'] == 'GET_ROOT_FOLDER': client = self.__systemManager.getClient(request['login']) return dict(Messages.getOK, **{'answer': client.getRootFolder()}) elif request['type'] == 'GET_SHARED_FOLDER': client = self.__systemManager.getClient(request['login']) return dict(Messages.getOK, **{'answer': client.getSharedFolder()}) elif request['type'] == 'SHARE_ITEM': if not 'itemId' in request or not 'toLogin' in request: return Messages.invalidRequest if not self.__systemManager.addPermission( request['itemId'], request['login'], request['toLogin']): return Messages.invalidRequest else: return Messages.permissionGiven elif request['type'] == 'RENAME_ITEM': if not 'itemId' in request or not 'newName' in request: return Messages.invalidRequest if not self.__systemManager.renameItem( request['login'], request['itemId'], request['newName']): return Messages.invalidRequest else: return Messages.itemRenamed elif request['type'] == 'EDIT_FILE_DATA': if not 'fileId' in request or not 'newData' in request: return Messages.invalidRequest if not self.__systemManager.editFileData( request['login'], request['fileId'], request['newData']): return Messages.invalidRequest else: return Messages.fileEdited elif request['type'] == 'MOVE_ITEM': if not 'itemId' in request or not 'newParent' in request: return Messages.invalidRequest if not self.__systemManager.moveItem( request['login'], request['itemId'], request['newParent']): return Messages.invalidRequest else: return Messages.itemMoved else: return Messages.invalidRequest