donthorp (owner)

Revisions

gist: 138972 Download_button fork
public
Description:
HTTP Server That Pretty Prints JSON
Public Clone URL: git://gist.github.com/138972.git
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import os
import cgi
import sys
import pprint
import simplejson
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
 
class customHTTPServer(BaseHTTPRequestHandler):
pp = pprint.PrettyPrinter(indent=2)
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write('<HTML><body>Get!</body></HTML>')
return
        
def do_POST(self):
global rootnode
ctype,pdict = cgi.parse_header(self.headers.getheader('Content-type'))
clen,pdict = cgi.parse_header(self.headers.getheader('Content-length'))
print 'Content-type: ' + ctype + "\n"
print 'Content-length: ' + clen + "\n"
 
if ctype == 'multipart/form-data':
print 'is multipart'
query = cgi.parse_multipart(self.rfile, pdict)
self.pp.pprint(query.keys())
elif ctype == 'text/plain' :
print self.rfile.read(int(clen))
print 'READ: ' + s
elif ctype == 'text/json' or ctype == 'application/json':
s = ""
s = self.rfile.read(int(clen))
print 'READ: ' + s
self.pp.pprint(simplejson.loads(s))
 
 
self.send_response(200)
self.end_headers()
self.wfile.write('Post!')
        
                
def main():
try:
server = HTTPServer(('',8000),customHTTPServer)
print 'server started at port 8000'
server.serve_forever()
except KeyboardInterrupt:
server.socket.close()
 
if __name__=='__main__':
main()