Exemple #1
0
def send_orders(environ, start_response):
    if environ['REQUEST_METHOD'].lower() == 'post':
        postdata = parse_qs(environ['wsgi.input'].read())

        session = environ.get('session')
        if 'uid' in session:
            host, port, username, password, now = session['uid']
            conn, cache = middleman.connect(host, port, username, password)

            if 'args' in postdata:
                args = postdata['args']
            else:
                args = None

            middleman.Orders(cache).sendOrder(conn, int(postdata['id'][0]), int(postdata['type'][0]), args) 

            turn = {'time': int(conn.time()), 'current': int(cache.objects[0].turn)}
            data = {'auth': True, 'sent': True, 'turn': turn, 'order_id': int(cache.orders[int(postdata['id'][0])].last.id)}
        else:
            data = {'auth': False}

        output = json.dumps(data, encoding='utf-8', ensure_ascii=False)

        start_response('200 OK', [('Content-Type', 'application/json')])
        return [output]
def get_objects(environ, start_response):
    """Get all objects from cache"""
    global currentTurn
    global cache
    print("--Getting Objects--")
    
    session = environ.get('session')
    if 'uid' in session:
        host, port, username, password, now = session['uid']
        conn = middleman.connect(host, port, username, password)
        
        turn = {'time': int(conn.time().time), 'current': int(conn.time().turn_num)}
        data = {'auth': True, 'objects': middleman.FriendlyObjects(cache, mediaListName).build(), 'turn': turn}
    else:
        data = {'auth': False}

    def test(obj):
        return str(obj).encode('utf-8')
    
    output = json.dumps(data, encoding='utf-8', ensure_ascii=False, default=test)

    start_response('200 OK', [('Content-Type', 'application/json')])
    
    print("Finished Getting Objects")
    return [output]
Exemple #3
0
def login(environ, start_response):
    """Login handler"""

    if environ['REQUEST_METHOD'].lower() == 'post':
        postdata = parse_qs(environ['wsgi.input'].read())
        
        host, colon, port = postdata['host'][0].rpartition(':')
        if colon == '':
            host = port
            port = 6923

        username = postdata['user'][0]
        password = postdata['pass'][0]

        data = {'auth': True, 'error': 'Wrong username or password.'}

        try:
            conn, cache = middleman.connect(host, port, username, password)
        except middleman.ConnectionError, e:
            data['auth'] = False
            data['error'] = str(e)
    
        if data['auth']:
            conn.disconnect()

            # Set session when login was ok
            import datetime, hashlib
            session = environ.get('session')
            session['uid'] = (host, port, username, password, datetime.datetime.now())
            session.save()
Exemple #4
0
def get_orders(environ, start_response):
    session = environ.get('session')
    if 'uid' in session:
        host, port, username, password, now = session['uid']
        conn, cache = middleman.connect(host, port, username, password)

        turn = {'time': int(conn.time()), 'current': int(cache.objects[0].turn)}
        data = {'auth': True, 'orders': middleman.Orders(cache).build(), 'turn': turn}
    else:
        data = {'auth': False}

    output = json.dumps(data, encoding='utf-8', ensure_ascii=False)

    start_response('200 OK', [('Content-Type', 'application/json')])
    return [output]
Exemple #5
0
def cache_update(environ, start_response):
    """Update cache"""

    session = environ.get('session')
    if 'uid' in session:
        host, port, username, password, now = session['uid']
        conn, cache = middleman.connect(host, port, username, password)
        cache.update(conn, middleman.callback)
        cache.save()
        turn = {'time': int(conn.time()), 'current': int(cache.objects[0].turn)}
        data = {'auth': True, 'cache': True, 'turn': turn}
    else:
        data = {'auth': False}

    output = json.dumps(data, encoding='utf-8', ensure_ascii=False)

    start_response('200 OK', [('Content-Type', 'application/json')])
    return [output]
def get_messages(environ, start_response):
    """Get all messages from cache"""
    global currentTurn
    global cache
    print("--Getting Messages--")
    
    session = environ.get('session')
    if 'uid' in session:
        host, port, username, password, now = session['uid']
        conn = middleman.connect(host, port, username, password)

        turn = {'time': int(conn.time().time), 'current': int(conn.time().turn_num)}
        data = {'auth': True, 'messages': middleman.Messages(cache).build()}
    else:
        data = {'auth': False}

    output = json.dumps(data, encoding='utf-8', ensure_ascii=False)

    start_response('200 OK', [('Content-Type', 'application/json')])
    return [output]
Exemple #7
0
def get_objects(environ, start_response):
    """Get all objects from cache"""

    session = environ.get('session')
    if 'uid' in session:
        host, port, username, password, now = session['uid']
        conn, cache = middleman.connect(host, port, username, password)
        #cache = middleman.cache(session['uid'][0], session['uid'][2])

        turn = {'time': int(conn.time()), 'current': int(cache.objects[0].turn)}
        data = {'auth': True, 'objects': middleman.FriendlyObjects(cache).build(), 'turn': turn}
    else:
        data = {'auth': False}

    def test(obj):
        return str(obj).encode('utf-8')

    output = json.dumps(data, encoding='utf-8', ensure_ascii=False, default=test)

    start_response('200 OK', [('Content-Type', 'application/json')])
    return [output]
def login(environ, start_response):
    """Login handler"""
    global cache
    print("--Logging In--")
    if environ['REQUEST_METHOD'].lower() == 'post':
        postdata = parse_qs(environ['wsgi.input'].read())
        
        host, colon, port = postdata['host'][0].rpartition(':')
        if colon == '':
            host = port
            port = 6923

        username = postdata['user'][0]
        password = postdata['pass'][0]

        data = {'auth': True, 'error': 'Wrong username or password.'}

        try:
            conn = middleman.connect(host, port, username, password)
        except middleman.ConnectionError, e:
            data['auth'] = False
            data['error'] = str(e)
    
        if data['auth']:
            
            # Set session when login was ok
            import datetime, hashlib
            session = environ.get('session')
            session['uid'] = (host, port, username, password, datetime.datetime.now())
            session.save()
            
            games = conn.games()
            if failed(games):
                print "Getting the game object failed!"
                return
            
            cache = middleman.createCache(host, port, username, password, games)
            
            conn.disconnect()
            
            #Get the media list from the server
            import urllib
            import gzip
            import os
            
            # Get the media file zip
            if not os.path.exists(mediaListDir):
                os.mkdir(mediaListDir)
            
            mediaListZip            = mediaListDir+'media-new.gz'
            mediaListNameServerVer  = mediaListDir + 'media-new-server.txt'
            
            urllib.urlretrieve(serverMediaZip, mediaListZip)
            if os.path.exists(mediaListZip):
                fileObj = gzip.GzipFile(mediaListZip, 'rb');
                fileObjOut = file(mediaListNameServerVer, 'wb');
                while 1:
                    lines = fileObj.readline()
                    if lines == '': break
                    fileObjOut.write(lines)
                fileObj.close()
                fileObjOut.close()
                os.remove(mediaListZip)
                        
            # Check if local media file is different from server file

            if os.path.exists(mediaListName) and os.path.exists(mediaListNameServerVer):
                print "Both txt files are now local"
                localMediaSize = os.path.getsize(mediaListName)
                serverMediaSize = os.path.getsize(mediaListNameServerVer)
                print "Sizes: " + str(localMediaSize) + ", " + str(serverMediaSize)
                if not localMediaSize is serverMediaSize:
                    os.remove(mediaListName)
                    os.rename(mediaListNameServerVer, mediaListName)
                else:
                    os.remove(mediaListNameServerVer)
            elif not os.path.exists(mediaListName):
                if os.path.exists(mediaListNameServerVer):
                    os.rename(mediaListNameServerVer, mediaListName)
                else:
                    print "There is no local image list file"
                    fileHolder = open(mediaListName, 'w')
                    fileHolder.write('')
                    fileHolder.close()