Skip to content

Instantly share code, notes, and snippets.

@onriv
Forked from huyng/reflect.py
Created March 2, 2022 06:22
Show Gist options
  • Select an option

  • Save onriv/1204b98280b64ec93a825b5eff957043 to your computer and use it in GitHub Desktop.

Select an option

Save onriv/1204b98280b64ec93a825b5eff957043 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()