diff --git a/private_dot_local/bin/pyserver.py b/private_dot_local/bin/pyserver.py index a613bae..8e03119 100755 --- a/private_dot_local/bin/pyserver.py +++ b/private_dot_local/bin/pyserver.py @@ -1,62 +1,62 @@ -#!/usr/bin/env python3 -""" -Very simple HTTP server in python for logging requests -Usage:: - ./server.py [] -""" -from http.server import BaseHTTPRequestHandler, HTTPServer -import logging - -class S(BaseHTTPRequestHandler): - def _set_response(self): - self.send_response(200) - self.send_header('Content-type', 'text/html') - self.end_headers() - - def do_GET(self): - logging.info("GET request,\nPath: %s\nHeaders:\n%s\n", str(self.path), str(self.headers)) - self._set_response() - self.wfile.write("GET request for {}".format(self.path).encode('utf-8')) - - def do_POST(self): - content_length = int(self.headers['Content-Length']) # <--- Gets the size of data - post_data = self.rfile.read(content_length) # <--- Gets the data itself - logging.info("POST request,\nPath: %s\nHeaders:\n%s\n\nBody:\n%s\n", - str(self.path), str(self.headers), post_data.decode('utf-8')) - self._set_response() - self.wfile.write("POST request for {}".format(self.path).encode('utf-8')) - - def do_PUT(self): - content_length = int(self.headers['Content-Length']) # <--- Gets the size of data - post_data = self.rfile.read(content_length) # <--- Gets the data itself - logging.info("PUT request,\nPath: %s\nHeaders:\n%s\n\nBody:\n%s\n", - str(self.path), str(self.headers), post_data.decode('utf-8')) - self._set_response() - self.wfile.write("PUT request for {}".format(self.path).encode('utf-8')) - - def do_DELETE(self): - logging.info("DELETE request,\nPath: %s\nHeaders:\n%s\n", str(self.path), str(self.headers)) - self._set_response() - self.wfile.write("DELETE request for {}".format(self.path).encode('utf-8')) - -def run(server_class=HTTPServer, handler_class=S, port=8080): - logging.basicConfig(level=logging.INFO) - fh = logging.FileHandler('/tmp/pyserver.log') - logging.getLogger().addHandler(fh) - server_address = ('', port) - httpd = server_class(server_address, handler_class) - logging.info('Starting httpd...\n') - try: - httpd.serve_forever() - except KeyboardInterrupt: - pass - httpd.server_close() - logging.info('Stopping httpd...\n') - -if __name__ == '__main__': - from sys import argv - - if len(argv) == 2: - run(port=int(argv[1])) - else: - run() +#!/usr/bin/env python3 +""" +Very simple HTTP server in python for logging requests +Usage:: + ./server.py [] +""" +from http.server import BaseHTTPRequestHandler, HTTPServer +import logging + +class S(BaseHTTPRequestHandler): + def _set_response(self): + self.send_response(200) + self.send_header('Content-type', 'text/html') + self.end_headers() + + def do_GET(self): + logging.info("GET request,\nPath: %s\nHeaders:\n%s\n", str(self.path), str(self.headers)) + self._set_response() + self.wfile.write("GET request for {}".format(self.path).encode('utf-8')) + + def do_POST(self): + content_length = int(self.headers['Content-Length']) # <--- Gets the size of data + post_data = self.rfile.read(content_length) # <--- Gets the data itself + logging.info("POST request,\nPath: %s\nHeaders:\n%s\n\nBody:\n%s\n", + str(self.path), str(self.headers), post_data.decode('utf-8')) + self._set_response() + self.wfile.write("POST request for {}".format(self.path).encode('utf-8')) + + def do_PUT(self): + content_length = int(self.headers['Content-Length']) # <--- Gets the size of data + post_data = self.rfile.read(content_length) # <--- Gets the data itself + logging.info("PUT request,\nPath: %s\nHeaders:\n%s\n\nBody:\n%s\n", + str(self.path), str(self.headers), post_data.decode('utf-8')) + self._set_response() + self.wfile.write("PUT request for {}".format(self.path).encode('utf-8')) + + def do_DELETE(self): + logging.info("DELETE request,\nPath: %s\nHeaders:\n%s\n", str(self.path), str(self.headers)) + self._set_response() + self.wfile.write("DELETE request for {}".format(self.path).encode('utf-8')) + +def run(server_class=HTTPServer, handler_class=S, port=8080): + logging.basicConfig(level=logging.INFO) + fh = logging.FileHandler('/tmp/pyserver.log') + logging.getLogger().addHandler(fh) + server_address = ('', port) + httpd = server_class(server_address, handler_class) + logging.info('Starting httpd...\n') + try: + httpd.serve_forever() + except KeyboardInterrupt: + pass + httpd.server_close() + logging.info('Stopping httpd...\n') + +if __name__ == '__main__': + from sys import argv + + if len(argv) == 2: + run(port=int(argv[1])) + else: + run()