Created
July 1, 2009 18:53
-
-
Save donthorp/138972 to your computer and use it in GitHub Desktop.
HTTP Server That Pretty Prints JSON
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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