comparison python2.py @ 957:96dc339fb382

Python2.py: Python server will now save received XML files and store them to the local folder 'saves'.
author Nicholas Jillings <nicholas.jillings@eecs.qmul.ac.uk>
date Tue, 26 May 2015 18:43:30 +0100
parents 263e64586aee
children 2dc61bd6494e
comparison
equal deleted inserted replaced
956:263e64586aee 957:96dc339fb382
1 import BaseHTTPServer 1 import BaseHTTPServer
2 from os import walk 2 from os import walk
3 from os import path 3 from os import path
4 import urllib2 4 import urllib2
5 import pickle
6 import datetime
7
8 curSaveIndex = 0;
9 curFileName = 'test-0.xml'
10 while(path.isfile('saves/'+curFileName)):
11 curSaveIndex += 1;
12 curFileName = 'test-'+str(curSaveIndex)+'.xml'
13
14 print curFileName
5 15
6 def send404(s): 16 def send404(s):
7 s.send_response(404) 17 s.send_response(404)
8 s.send_header("Content-type", "text/html") 18 s.send_header("Content-type", "text/html")
9 s.end_headers() 19 s.end_headers()
28 s.send_header("Content-Length", size) 38 s.send_header("Content-Length", size)
29 s.end_headers() 39 s.end_headers()
30 s.wfile.write(fileDump.read()) 40 s.wfile.write(fileDump.read())
31 fileDump.close() 41 fileDump.close()
32 42
43 def saveFile(self):
44 global curFileName
45 global curSaveIndex
46 varLen = int(self.headers['Content-Length'])
47 postVars = self.rfile.read(varLen)
48 print curFileName
49 file = open('saves/'+curFileName,'w')
50 curSaveIndex += 1;
51 curFileName = 'test-'+str(curSaveIndex)+'.xml'
52 print curFileName
53 file.write(postVars)
54 file.close()
55 self.send_response(200)
56 self.send_header("Content-type", "text/xml")
57 self.end_headers()
58 self.wfile.write('<response><state>OK</state><file>saves/'+curFileName+'</file></response>')
33 59
34 class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler): 60 class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
35 def do_HEAD(s): 61 def do_HEAD(s):
36 s.send_response(200) 62 s.send_response(200)
37 s.send_header("Content-type", "text/html") 63 s.send_header("Content-type", "text/html")
44 if (request.path == '/'): 70 if (request.path == '/'):
45 request.path = '/index.html' 71 request.path = '/index.html'
46 processFile(request) 72 processFile(request)
47 else: 73 else:
48 send404(request) 74 send404(request)
75 def do_POST(request):
76 if(request.client_address[0] == "127.0.0.1"):
77 if (request.path == "/save"):
78 saveFile(request)
79 else:
80 send404(request)
49 81
50 def run(server_class=BaseHTTPServer.HTTPServer, 82 def run(server_class=BaseHTTPServer.HTTPServer,
51 handler_class=MyHandler): 83 handler_class=MyHandler):
52 server_address = ('', 8000) 84 server_address = ('', 8000)
53 httpd = server_class(server_address, handler_class) 85 httpd = server_class(server_address, handler_class)