Skip to content

Instantly share code, notes, and snippets.

@jsidhu
Forked from huyng/reflect.py
Created June 27, 2017 16:34
Show Gist options
  • Select an option

  • Save jsidhu/cf70a3d1e5a006f526eaac65ed49875d to your computer and use it in GitHub Desktop.

Select an option

Save jsidhu/cf70a3d1e5a006f526eaac65ed49875d 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()