Skip to content

Instantly share code, notes, and snippets.

@donthorp
Created July 1, 2009 18:53
Show Gist options
  • Save donthorp/138972 to your computer and use it in GitHub Desktop.
Save donthorp/138972 to your computer and use it in GitHub Desktop.
HTTP Server That Pretty Prints JSON
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()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment