Mercurial > hg > webaudioevaluationtool
view pythonServer-3.py @ 1176:12ef00ae9dd5
Bug #1567: AB.js interfaces, the playback toggle now controls both playback start and playback stop commands. Button text updated to reflect.
author | Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk> |
---|---|
date | Thu, 11 Feb 2016 14:16:09 +0000 |
parents | c44fbf72f7f2 |
children |
line wrap: on
line source
from http.server import BaseHTTPRequestHandler, HTTPServer from os import walk from os import path from os import listdir import inspect import os import urllib as urllib2 import pickle import datetime # 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_files = [] for filename in listdir(PSEUDO_PATH): if filename.endswith('.xml'): pseudo_files.append(filename) curSaveIndex = 0; curFileName = 'test-0.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') def send404(s): 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('.') s.send_response(200) if (fmt[1] == 'html'): s.send_header("Content-type", 'text/html') fileDump = open(urllib2.parse.unquote(s.path), encoding='utf-8') fileBytes = bytes(fileDump.read(), "utf-8") fileDump.close() elif (fmt[1] == 'css'): s.send_header("Content-type", 'text/css') fileDump = open(urllib2.parse.unquote(s.path), encoding='utf-8') fileBytes = bytes(fileDump.read(), "utf-8") fileDump.close() elif (fmt[1] == 'js'): s.send_header("Content-type", 'application/javascript') fileDump = open(urllib2.parse.unquote(s.path), encoding='utf-8') fileBytes = bytes(fileDump.read(), "utf-8") fileDump.close() else: s.send_header("Content-type", 'application/octet-stream') fileDump = open(urllib2.parse.unquote(s.path), 'rb') fileBytes = fileDump.read() fileDump.close() s.send_header("Content-Length", len(fileBytes)) s.end_headers() s.wfile.write(fileBytes) def saveFile(self): global curFileName global curSaveIndex varLen = int(self.headers['Content-Length']) postVars = self.rfile.read(varLen) print(curFileName) file = open('saves/'+curFileName,'w') file.write(postVars.decode("utf-8")) file.close() try: wbytes = os.path.getsize('saves/'+curFileName) 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(bytes('<response state="OK"><message>OK</message><file bytes="'+str(wbytes)+'">"saves/'+curFileName+'"</file></response>','utf-8')) curSaveIndex += 1 curFileName = 'test-'+str(curSaveIndex)+'.xml' class MyHandler(BaseHTTPRequestHandler): def do_HEAD(s): s.send_response(200) s.send_header("Content-type", "text/html") s.end_headers() def do_GET(request): global pseudo_index global pseudo_files global PSEUDO_PATH if(request.client_address[0] == "127.0.0.1"): if (request.path == "/favicon.ico"): send404(request) else: if (request.path == '/'): request.path = '/index.html' elif (request.path == '/pseudo.xml'): request.path = '/'+PSEUDO_PATH + pseudo_files[pseudo_index] print(request.path) pseudo_index += 1 pseudo_index %= len(pseudo_files) processFile(request) else: send404(request) def do_POST(request): if(request.client_address[0] == "127.0.0.1"): if (request.path == "/save" or request.path == "/save.php"): saveFile(request) else: send404(request) def run(server_class=HTTPServer, handler_class=MyHandler): server_address = ('', 8000) httpd = server_class(server_address, handler_class) httpd.serve_forever() run()