Mercurial > hg > webaudioevaluationtool
comparison pythonServer.py @ 749:07c996307cbd
Bug #1510 Fixed.
author | Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk> |
---|---|
date | Mon, 21 Dec 2015 11:53:05 +0000 |
parents | |
children | c9c010690d56 2647dd909229 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 749:07c996307cbd |
---|---|
1 import BaseHTTPServer | |
2 from os import walk | |
3 from os import path | |
4 from os import listdir | |
5 import inspect | |
6 import os | |
7 import urllib2 | |
8 import pickle | |
9 import datetime | |
10 | |
11 # Go to right folder. | |
12 scriptdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) # script directory | |
13 os.chdir(scriptdir) # does this work? | |
14 | |
15 PSEUDO_PATH = 'example_eval/' | |
16 pseudo_files = [] | |
17 for filename in listdir(PSEUDO_PATH): | |
18 if filename.endswith('.xml'): | |
19 pseudo_files.append(filename) | |
20 | |
21 curSaveIndex = 0; | |
22 curFileName = 'test-0.xml' | |
23 while(path.isfile('saves/'+curFileName)): | |
24 curSaveIndex += 1; | |
25 curFileName = 'test-'+str(curSaveIndex)+'.xml' | |
26 | |
27 print "Next save - " + curFileName | |
28 pseudo_index = curSaveIndex % len(pseudo_files) | |
29 print "Next test in pseudo-random queue - " + pseudo_files[pseudo_index] | |
30 | |
31 def send404(s): | |
32 s.send_response(404) | |
33 s.send_header("Content-type", "text/html") | |
34 s.end_headers() | |
35 | |
36 def processFile(s): | |
37 s.path = s.path[1:len(s.path)] | |
38 st = s.path.rsplit(',') | |
39 lenSt = len(st) | |
40 fmt = st[lenSt-1].rsplit('.') | |
41 size = path.getsize(urllib2.unquote(s.path)) | |
42 fileDump = open(urllib2.unquote(s.path)) | |
43 s.send_response(200) | |
44 | |
45 if (fmt[1] == 'html'): | |
46 s.send_header("Content-type", 'text/html') | |
47 elif (fmt[1] == 'css'): | |
48 s.send_header("Content-type", 'text/css') | |
49 elif (fmt[1] == 'js'): | |
50 s.send_header("Content-type", 'application/javascript') | |
51 else: | |
52 s.send_header("Content-type", 'application/octet-stream') | |
53 s.send_header("Content-Length", size) | |
54 s.end_headers() | |
55 s.wfile.write(fileDump.read()) | |
56 fileDump.close() | |
57 | |
58 def saveFile(self): | |
59 global curFileName | |
60 global curSaveIndex | |
61 varLen = int(self.headers['Content-Length']) | |
62 postVars = self.rfile.read(varLen) | |
63 print curFileName | |
64 file = open('saves/'+curFileName,'w') | |
65 file.write(postVars) | |
66 file.close() | |
67 try: | |
68 wbytes = os.path.getsize('saves/'+curFileName) | |
69 except OSError: | |
70 self.send_response(200) | |
71 self.send_header("Content-type", "text/xml") | |
72 self.end_headers() | |
73 self.wfile.write('<response state="error"><message>Could not open file</message></response>') | |
74 self.send_response(200) | |
75 self.send_header("Content-type", "text/xml") | |
76 self.end_headers() | |
77 self.wfile.write('<response state="OK"><message>OK</message><file bytes="'+str(wbytes)+'">"saves/'+curFileName+'"</file></response>') | |
78 curSaveIndex += 1 | |
79 curFileName = 'test-'+str(curSaveIndex)+'.xml' | |
80 | |
81 class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |
82 def do_HEAD(s): | |
83 s.send_response(200) | |
84 s.send_header("Content-type", "text/html") | |
85 s.end_headers() | |
86 def do_GET(request): | |
87 global pseudo_index | |
88 global pseudo_files | |
89 global PSEUDO_PATH | |
90 if(request.client_address[0] == "127.0.0.1"): | |
91 if (request.path == "/favicon.ico"): | |
92 send404(request) | |
93 else: | |
94 if (request.path == '/'): | |
95 request.path = '/index.html' | |
96 elif (request.path == '/pseudo.xml'): | |
97 request.path = '/'+PSEUDO_PATH + pseudo_files[pseudo_index] | |
98 print request.path | |
99 pseudo_index += 1 | |
100 pseudo_index %= len(pseudo_files) | |
101 processFile(request) | |
102 else: | |
103 send404(request) | |
104 | |
105 def do_POST(request): | |
106 if(request.client_address[0] == "127.0.0.1"): | |
107 if (request.path == "/save" or request.path == "/save.php"): | |
108 saveFile(request) | |
109 else: | |
110 send404(request) | |
111 | |
112 def run(server_class=BaseHTTPServer.HTTPServer, | |
113 handler_class=MyHandler): | |
114 server_address = ('', 8000) | |
115 httpd = server_class(server_address, handler_class) | |
116 httpd.serve_forever() | |
117 | |
118 run() |