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]
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()
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]
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]
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()