Skip to content

Instantly share code, notes, and snippets.

@coverboy
Forked from huyng/reflect.py
Created January 23, 2021 09:32
Show Gist options
  • Save coverboy/0fdfed85c9a4ffdf57a23b049fa87b1c to your computer and use it in GitHub Desktop.
Save coverboy/0fdfed85c9a4ffdf57a23b049fa87b1c to your computer and use it in GitHub Desktop.

Revisions

  1. huyng revised this gist Apr 1, 2012. No changes.
  2. huyng created this gist Feb 7, 2011.
    56 changes: 56 additions & 0 deletions reflect.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,56 @@
    #!/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----- Request Start ----->\n")
    print(request_path)
    print(self.headers)
    print("<----- Request End -----\n")

    self.send_response(200)
    self.send_header("Set-Cookie", "foo=bar")

    def do_POST(self):

    request_path = self.path

    print("\n----- 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("<----- Request End -----\n")

    self.send_response(200)

    do_PUT = do_POST
    do_DELETE = do_GET

    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()