def SignUpPostHandler(self, httpMessage):

        #check user name is unique
        #Enter into database
        postParams = httpMessage.ParseBodyPost()
        #check password and re-password match
        if postParams["password"] == postParams["rePassword"]:
            if DataBase.GetInstance().AddNewUser(postParams["userName"],
                                                 postParams["password"]):
                #return redirect to main page
                return self.RedirectToMainPage(postParams["userName"])
            #return sign up page with error; TODO add error messages
            return self.ServeSignUpPage()
        #return to sign up page with error; TODO add error messages
        return self.ServeSignUpPage()
 async def handleMessages(self, websocket, path):
     print("socket connected to websocket")
     # register(websocket) sends user_event() to websocket
     await self.register(websocket)
     try:
         async for content in websocket:
             contentJson = json.loads(content)
             message = contentJson["message"]
             valid, tokenBody = TokenAuthentication.DecodeToken(
                 contentJson["Token"])
             if not valid:
                 #TODO close connection in this scenario
                 continue
             DataBase.GetInstance().AddMessage(message,
                                               tokenBody["UserName"])
             await self.NotifyUsers(tokenBody["UserName"], message)
     finally:
         await self.unregister(websocket)
    def LoginHandler(self, httpMessage):
        if httpMessage.command == 'GET':
            return self.ServeLoginPage()
        if httpMessage.command == 'POST':
            #check to make sure password is good
            #make token for user
            #redirect to main page
            info = httpMessage.body.split("&")
            userName = info[0].split('=')[1]
            password = info[1].split('=')[1]
            userName = urllib.parse.unquote_plus(userName)
            password = urllib.parse.unquote_plus(password)

            #check for valid user name and password
            dbInstance = DataBase.GetInstance()
            if dbInstance.ValidateUser(userName, password):
                #make JWT java web token
                return self.RedirectToMainPage(userName)
            else:
                return self.ServeLoginPage()
    def ServeIndex(self, httpMessage):
        if httpMessage.command == 'GET':
            #Check for valid token
            if "Token" in httpMessage.cookies:
                encodedToken = httpMessage.cookies["Token"]
                valid, decodedToken = TokenAuthentication.DecodeToken(
                    encodedToken)
                if not valid:
                    return self.ServeLoginPage()

                print("The user is " + decodedToken["UserName"])
                response = HttpResponseBuilder.MakeStatus200()
                response += HttpResponseBuilder.MakeGenericHeader()
                params = {}
                params['messages'] = DataBase.GetInstance().GetAllMessages()
                params['ipAddress'] = self.network.ServerIp
                params['portNum'] = self.network.WebsocketPortNum
                response += HttpResponseBuilder.MakeFile(
                    "Views/main.html", params)
                response += HttpResponseBuilder.newline
                return response

            return self.ServeLoginPage()