Skip to content

Instantly share code, notes, and snippets.

@donthorp
Created January 4, 2011 19:33
Show Gist options
  • Save donthorp/765264 to your computer and use it in GitHub Desktop.
Save donthorp/765264 to your computer and use it in GitHub Desktop.
A simple HTTP server to use in testing
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