Skip to content

Instantly share code, notes, and snippets.

@anhkind
Forked from huyng/reflect.py
Created November 21, 2016 15:51
Show Gist options
  • Select an option

  • Save anhkind/bd422c01421f17bbfedaa2657be22b45 to your computer and use it in GitHub Desktop.

Select an option

Save anhkind/bd422c01421f17bbfedaa2657be22b45 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()