Skip to content

Instantly share code, notes, and snippets.

@martjanz
Last active April 9, 2018 21:38
Show Gist options
  • Save martjanz/cb7c20267aa120f8a53bc949cd8c9ad2 to your computer and use it in GitHub Desktop.
Save martjanz/cb7c20267aa120f8a53bc949cd8c9ad2 to your computer and use it in GitHub Desktop.
HTTP Requests reflector on Python
#!/usr/bin/env python
"""
Reflects the requests from HTTP methods GET, POST, PUT, and DELETE
Written by Nathan Hamiel (2010)
"""
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
from optparse import OptionParser
class RequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
request_path = self.path
print("\n----- GET Request Start ----->\n")
print(request_path)
print(self.headers)
print("<----- GET Request End -----\n")
self.send_response(200)
self.send_header("Set-Cookie", "foo=bar")
def do_POST(self):
request_path = self.path
print("\n----- POST Request Start ----->\n")
print(request_path)
request_headers = self.headers
content_length = request_headers.getheaders('content-length')
length = int(content_length[0]) if content_length else 0
print(request_headers)
print(self.rfile.read(length))
print("<----- POST Request End -----\n")
self.send_response(200)
def do_PUT(self):
request_path = self.path
print("\n----- PUT Request Start ----->\n")
print(request_path)
request_headers = self.headers
content_length = request_headers.getheaders('content-length')
length = int(content_length[0]) if content_length else 0
print(request_headers)
print(self.rfile.read(length))
print("<----- PUT Request End -----\n")
self.send_response(200)
def do_PATCH(self):
request_path = self.path
print("\n----- PATCH Request Start ----->\n")
print(request_path)
request_headers = self.headers
content_length = request_headers.getheaders('content-length')
length = int(content_length[0]) if content_length else 0
print(request_headers)
print(self.rfile.read(length))
print("<----- PATCH Request End -----\n")
self.send_response(200)
def do_DELETE(self):
request_path = self.path
print("\n----- DELETE Request Start ----->\n")
print(request_path)
request_headers = self.headers
content_length = request_headers.getheaders('content-length')
length = int(content_length[0]) if content_length else 0
print(request_headers)
print(self.rfile.read(length))
print("<----- DELETE Request End -----\n")
self.send_response(200)
def main():
port = 8080
print('Listening on localhost:%s' % port)
server = HTTPServer(('', port), RequestHandler)
server.serve_forever()
if __name__ == "__main__":
parser = OptionParser()
parser.usage = ("Creates an http-server that will echo out any GET or POST parameters\n"
"Run:\n\n"
" reflect")
(options, args) = parser.parse_args()
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment