Mercurial > hg > webaudioevaluationtool
diff scripts/pythonServer.py @ 2222:4d1aa94202e3
Merged pythonServer-3 into unified pythonServer. Removed pythonServer-legacy. Updated pythonServer to work in scripts subdir.
author | Nicholas Jillings <nicholas.jillings@mail.bcu.ac.uk> |
---|---|
date | Thu, 14 Apr 2016 13:19:17 +0100 |
parents | 4615745ed30c |
children | 4e334c942d41 |
line wrap: on
line diff
--- a/scripts/pythonServer.py Thu Apr 14 12:26:53 2016 +0100 +++ b/scripts/pythonServer.py Thu Apr 14 13:19:17 2016 +0100 @@ -1,21 +1,32 @@ #!/usr/bin/python -import BaseHTTPServer +# Detect the Python version to switch code between 2.x and 3.x +# http://stackoverflow.com/questions/9079036/detect-python-version-at-runtime +import sys + from os import walk from os import path from os import listdir import inspect import os -import urllib2 -import urlparse import pickle import datetime +if sys.version_info[0] == 2: + # Version 2.x + import BaseHTTPServer + import urllib2 + import urlparse +elif sys.version_info[0] == 3: + # Version 3.x + from http.server import BaseHTTPRequestHandler, HTTPServer + import urllib as urllib2 + # Go to right folder. scriptdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) # script directory os.chdir(scriptdir) # does this work? -PSEUDO_PATH = 'example_eval/' +PSEUDO_PATH = '../example_eval/' pseudo_files = [] for filename in listdir(PSEUDO_PATH): if filename.endswith('.xml'): @@ -23,42 +34,79 @@ curSaveIndex = 0; curFileName = 'test-0.xml' -while(path.isfile('saves/'+curFileName)): - curSaveIndex += 1; - curFileName = 'test-'+str(curSaveIndex)+'.xml' +while(path.isfile('../saves/'+curFileName)): + curSaveIndex += 1; + curFileName = 'test-'+str(curSaveIndex)+'.xml' pseudo_index = curSaveIndex % len(pseudo_files) -print 'URL: http://localhost:8000/index.html' +if sys.version_info[0] == 2: + print 'URL: http://localhost:8000/index.html' +elif sys.version_info[0] == 3: + print('URL: http://localhost:8000/index.html') def send404(s): - s.send_response(404) - s.send_header("Content-type", "text/html") - s.end_headers() + s.send_response(404) + s.send_header("Content-type", "text/html") + s.end_headers() def processFile(s): - s.path = s.path.rsplit('?') - s.path = s.path[0] - s.path = s.path[1:len(s.path)] - st = s.path.rsplit(',') - lenSt = len(st) - fmt = st[lenSt-1].rsplit('.') - size = path.getsize(urllib2.unquote(s.path)) - fileDump = open(urllib2.unquote(s.path)) - s.send_response(200) - - if (fmt[1] == 'html'): - s.send_header("Content-type", 'text/html') - elif (fmt[1] == 'css'): - s.send_header("Content-type", 'text/css') - elif (fmt[1] == 'js'): - s.send_header("Content-type", 'application/javascript') - else: - s.send_header("Content-type", 'application/octet-stream') - s.send_header("Content-Length", size) - s.end_headers() - s.wfile.write(fileDump.read()) - fileDump.close() + if sys.version_info[0] == 2: + s.path = s.path.rsplit('?') + s.path = s.path[0] + s.path = s.path[1:len(s.path)] + st = s.path.rsplit(',') + lenSt = len(st) + fmt = st[lenSt-1].rsplit('.') + fpath = "../"+urllib2.unquote(s.path) + size = path.getsize(fpath) + fileDump = open(fpath) + s.send_response(200) + + if (fmt[1] == 'html'): + s.send_header("Content-type", 'text/html') + elif (fmt[1] == 'css'): + s.send_header("Content-type", 'text/css') + elif (fmt[1] == 'js'): + s.send_header("Content-type", 'application/javascript') + else: + s.send_header("Content-type", 'application/octet-stream') + s.send_header("Content-Length", size) + s.end_headers() + s.wfile.write(fileDump.read()) + fileDump.close() + elif sys.version_info[0] == 3: + s.path = s.path.rsplit('?') + s.path = s.path[0] + s.path = s.path[1:len(s.path)] + st = s.path.rsplit(',') + lenSt = len(st) + fmt = st[lenSt-1].rsplit('.') + fpath = "../"+urllib2.unquote(s.path) + s.send_response(200) + if (fmt[1] == 'html'): + s.send_header("Content-type", 'text/html') + fileDump = open(fpath, encoding='utf-8') + fileBytes = bytes(fileDump.read(), "utf-8") + fileDump.close() + elif (fmt[1] == 'css'): + s.send_header("Content-type", 'text/css') + fileDump = open(fpath, encoding='utf-8') + fileBytes = bytes(fileDump.read(), "utf-8") + fileDump.close() + elif (fmt[1] == 'js'): + s.send_header("Content-type", 'application/javascript') + fileDump = open(fpath, encoding='utf-8') + fileBytes = bytes(fileDump.read(), "utf-8") + fileDump.close() + else: + s.send_header("Content-type", 'application/octet-stream') + fileDump = open(fpath, 'rb') + fileBytes = fileDump.read() + fileDump.close() + s.send_header("Content-Length", len(fileBytes)) + s.end_headers() + s.wfile.write(fileBytes) def keygen(s): reply = "" @@ -74,36 +122,39 @@ s.send_header("Content-type", "application/xml") s.end_headers() s.wfile.write(reply) - file = open("saves/save-"+key+".xml",'w') + file = open("../saves/save-"+key+".xml",'w') file.write("<waetresult key="+key+"/>") file.close(); def saveFile(self): - global curFileName - global curSaveIndex - options = self.path.rsplit('?') - options = options[1].rsplit('=') - key = options[1] - print key - varLen = int(self.headers['Content-Length']) - postVars = self.rfile.read(varLen) - print "Saving file key "+key - file = open('saves/save-'+key+'.xml','w') - file.write(postVars) - file.close() - try: - wbytes = os.path.getsize('saves/save-'+key+'.xml') - except OSError: - self.send_response(200) - self.send_header("Content-type", "text/xml") - self.end_headers() - self.wfile.write('<response state="error"><message>Could not open file</message></response>') - self.send_response(200) - self.send_header("Content-type", "text/xml") - self.end_headers() - self.wfile.write('<response state="OK"><message>OK</message><file bytes="'+str(wbytes)+'">"saves/'+curFileName+'"</file></response>') - curSaveIndex += 1 - curFileName = 'test-'+str(curSaveIndex)+'.xml' + global curFileName + global curSaveIndex + options = self.path.rsplit('?') + options = options[1].rsplit('=') + key = options[1] + print key + varLen = int(self.headers['Content-Length']) + postVars = self.rfile.read(varLen) + if sys.version_info[0] == 2: + print "Saving file key "+key + elif sys.version_info[0] == 3: + print("Saving file key "+key) + file = open('../saves/save-'+key+'.xml','w') + file.write(postVars) + file.close() + try: + wbytes = os.path.getsize('../saves/save-'+key+'.xml') + except OSError: + self.send_response(200) + self.send_header("Content-type", "text/xml") + self.end_headers() + self.wfile.write('<response state="error"><message>Could not open file</message></response>') + self.send_response(200) + self.send_header("Content-type", "text/xml") + self.end_headers() + self.wfile.write('<response state="OK"><message>OK</message><file bytes="'+str(wbytes)+'">"saves/'+curFileName+'"</file></response>') + curSaveIndex += 1 + curFileName = 'test-'+str(curSaveIndex)+'.xml' class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler): def do_HEAD(s): @@ -137,11 +188,15 @@ saveFile(request) else: send404(request) - -def run(server_class=BaseHTTPServer.HTTPServer, - handler_class=MyHandler): - server_address = ('', 8000) - httpd = server_class(server_address, handler_class) - httpd.serve_forever() +if sys.version_info[0] == 2: + def run(server_class=BaseHTTPServer.HTTPServer,handler_class=MyHandler): + server_address = ('', 8000) + httpd = server_class(server_address, handler_class) + httpd.serve_forever() +elif sys.version_info[0] == 3: + def run(server_class=HTTPServer,handler_class=MyHandler): + server_address = ('', 8000) + httpd = server_class(server_address, handler_class) + httpd.serve_forever() run()