me@1942: import BaseHTTPServer me@1942: from os import walk me@1942: from os import path me@1942: from os import listdir me@1942: import inspect me@1942: import os me@1942: import urllib2 me@1942: import pickle me@1942: import datetime me@1942: me@1942: # Go to right folder. me@1942: scriptdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) # script directory me@1942: os.chdir(scriptdir) # does this work? me@1942: me@1942: PSEUDO_PATH = 'example_eval/' me@1942: pseudo_files = [] me@1942: for filename in listdir(PSEUDO_PATH): me@1942: if filename.endswith('.xml'): me@1942: pseudo_files.append(filename) me@1942: me@1942: curSaveIndex = 0; me@1942: curFileName = 'test-0.xml' me@1942: while(path.isfile('saves/'+curFileName)): me@1942: curSaveIndex += 1; me@1942: curFileName = 'test-'+str(curSaveIndex)+'.xml' me@1942: me@1942: print "Next save - " + curFileName me@1942: pseudo_index = curSaveIndex % len(pseudo_files) me@1942: print "Next test in pseudo-random queue - " + pseudo_files[pseudo_index] me@1942: me@1942: def send404(s): me@1942: s.send_response(404) me@1942: s.send_header("Content-type", "text/html") me@1942: s.end_headers() me@1942: me@1942: def processFile(s): me@1942: s.path = s.path[1:len(s.path)] me@1942: st = s.path.rsplit(',') me@1942: lenSt = len(st) me@1942: fmt = st[lenSt-1].rsplit('.') me@1942: size = path.getsize(urllib2.unquote(s.path)) me@1942: fileDump = open(urllib2.unquote(s.path)) me@1942: s.send_response(200) me@1942: me@1942: if (fmt[1] == 'html'): me@1942: s.send_header("Content-type", 'text/html') me@1942: elif (fmt[1] == 'css'): me@1942: s.send_header("Content-type", 'text/css') me@1942: elif (fmt[1] == 'js'): me@1942: s.send_header("Content-type", 'application/javascript') me@1942: else: me@1942: s.send_header("Content-type", 'application/octet-stream') me@1942: s.send_header("Content-Length", size) me@1942: s.end_headers() me@1942: s.wfile.write(fileDump.read()) me@1942: fileDump.close() me@1942: me@1942: def saveFile(self): me@1942: global curFileName me@1942: global curSaveIndex me@1942: varLen = int(self.headers['Content-Length']) me@1942: postVars = self.rfile.read(varLen) me@1942: print curFileName me@1942: file = open('saves/'+curFileName,'w') me@1942: curSaveIndex += 1; me@1942: curFileName = 'test-'+str(curSaveIndex)+'.xml' me@1942: print curFileName me@1942: file.write(postVars) me@1942: file.close() me@1942: self.send_response(200) me@1942: self.send_header("Content-type", "text/xml") me@1942: self.end_headers() me@1942: self.wfile.write('OKsaves/'+curFileName+'') me@1942: me@1942: class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler): me@1942: def do_HEAD(s): me@1942: s.send_response(200) me@1942: s.send_header("Content-type", "text/html") me@1942: s.end_headers() me@1942: def do_GET(request): me@1942: global pseudo_index me@1942: global pseudo_files me@1942: global PSEUDO_PATH me@1942: if(request.client_address[0] == "127.0.0.1"): me@1942: if (request.path == "/favicon.ico"): me@1942: send404(request) me@1942: else: me@1942: if (request.path == '/'): me@1942: request.path = '/index.html' me@1942: elif (request.path == '/pseudo.xml'): me@1942: request.path = '/'+PSEUDO_PATH + pseudo_files[pseudo_index] me@1942: print request.path me@1942: pseudo_index += 1 me@1942: pseudo_index %= len(pseudo_files) me@1942: processFile(request) me@1942: else: me@1942: send404(request) me@1942: me@1942: def do_POST(request): me@1942: if(request.client_address[0] == "127.0.0.1"): me@1942: if (request.path == "/save"): me@1942: saveFile(request) me@1942: else: me@1942: send404(request) me@1942: me@1942: def run(server_class=BaseHTTPServer.HTTPServer, me@1942: handler_class=MyHandler): me@1942: server_address = ('', 8000) me@1942: httpd = server_class(server_address, handler_class) me@1942: httpd.serve_forever() me@1942: me@1942: run()