コード例 #1
0
    def render_POST(self, request):
        print '[WebServer][Post] ' + request.uri
        session = request.getSession()

        if request.uri == '/api/register':
            request.setHeader('content-type', 'application/json')
            data = request.content.getvalue()

            entries = len(TempData)
            loop = 0

            while loop != entries:
                Session = TempData[loop]
                if Session.keys()[0] == session.uid:
                    data2 = Session[session.uid]
                loop += 1

            if hasattr(session, 'username'):
                return '{ "status": "err", "code": "username", "message": "You have already an account!", "data": "null" }'

            try:
                username = data.split('username='******'&')[0]
                if len(username) == 0:
                    raise Exception
            except:
                return '{ "status": "err", "code": "username", "message": "' + "You must enter username!" + '", "data": "null" }'

            try:
                email = data.split('email=')[1].split('&')[0]
                if len(email) == 0:
                    raise Exception
            except:
                return '{ "status": "err", "code": "username", "message": "' + "You must enter email!" + '", "data": "null" }'

            try:
                password1 = data.split('password='******'&')[0]
                password2 = data.split('password2=')[1].split('&')[0]

                if len(password1) == 0:
                    raise Exception
                if len(password2) == 0:
                    raise Exception
            except:
                request.setHeader('content-type', 'application/json')
                return '{ "status": "err", "code": "password1", "message": "' + "You must enter both passwords!" + '", "data": "null" }'

            if password1 != password2:
                request.setHeader('content-type', 'application/json')
                return '{ "status": "err", "code": "password2", "message": "' + "Passwords you typed doesn't match!" + '", "data": "null" }'

            try:
                birthday = data.split('birthday=')[1]

                if len(birthday) == 0:
                    raise Exception
            except:
                return '{ "status": "err", "code": "birthday", "message": "' + "You didn't specified correct birthday date!" + '", "data": "null" }'

            try:
                RegisterUser(username, email, password1, birthday)
            except:
                return '{ "status": "err", "code": "username", "message": "' + "This username or email are already registered!" + '", "data": "null" }'

            AccountID = GetAccountID(username)

            try:
                pass
            except:
                print ConsoleColor(
                    'Warning'
                ) + "[WebServer][Register] Cannot register new hero!" + ConsoleColor(
                    'End')
            baseMSGFactionStats = data2.split('baseMSGFactionStats=')[1].split(
                '&')[0]
            baseMSGPersonaClassStats = data2.split(
                'baseMSGPersonaClassStats=')[1].split('&')[0]
            baseMSGAppearanceSkinToneStats = data2.split(
                'baseMSGAppearanceSkinToneStats=')[1].split('&')[0]
            haircolor_ui_name = data2.split('haircolor_ui_name=')[1].split(
                '&')[0]
            baseMSGAppearanceHairStyleStats = data2.split(
                'baseMSGAppearanceHairStyleStats=')[1].split('&')[0]
            facial_ui_name = data2.split('facial_ui_name=')[1].split('&')[0]
            nameCharacterText = data2.split('nameCharacterText=')[1]
            RegisterHero(AccountID, baseMSGFactionStats,
                         baseMSGPersonaClassStats,
                         baseMSGAppearanceSkinToneStats, haircolor_ui_name,
                         baseMSGAppearanceHairStyleStats, facial_ui_name,
                         nameCharacterText)
            TempData.remove(Session)
            print ConsoleColor(
                'Success'
            ) + '[WebServer] Successfully registered new user! (' + username + ')' + ConsoleColor(
                'End')
            session.username = username
            return '{ "status": "ok", "data": {"redirect": "/api/GetSession?username='******'&password='******'"}, "message": "' + "Hello" + username + "!" + '" }'

        if request.uri == '/api/login':
            request.setHeader('content-type', 'application/json')
            data = request.content.getvalue()

            if hasattr(session, 'username'):
                return '{ "status": "err", "code": "username", "message": "You are already loggedom!", "data": "null" }'

            try:
                if len(data.split('&')[0].split('username='******'&')[0].split('username='******'content-type', 'application/json')
                return '{ "status": "err", "code": "username", "message": "' + "You must enter username!" + '", "data": "null" }'

            try:
                if len(data.split('&')[1].split('password='******'&')[1].split('password='******'content-type', 'application/json')
                return '{ "status": "err", "code": "password", "message": "' + "You must enter password!" + '", "data": "null" }'

            account = LoginUser(username)

            if account == None:
                return '{ "status": "err", "code": "username", "message": "' + "User not found!" + '", "data": "null" }'

            if account[1] == username and account[3] == password:
                print ConsoleColor(
                    'Success'
                ) + '[WebServer] User ' + username + ' successfully logged in!' + ConsoleColor(
                    'End')
                session.username = username
                return '{ "status": "ok", "data": {"redirect": "/api/GetSession?username='******'&password='******'"}, "message": "' + "Hello" + username + "!" + '" }'

        if request.uri == '/Register':
            file_handler = open('Web/Register.html', 'rb')
            response = file_handler.read()
            TempData.append({session.uid: request.content.getvalue()})
            file_handler.close()
            return response