From 30879149f544a6cb1ebbeb3c27c467c479d0d448 Mon Sep 17 00:00:00 2001 From: jullinator Date: Fri, 17 Aug 2018 23:56:49 +0200 Subject: first draft --- server.py | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 server.py (limited to 'server.py') diff --git a/server.py b/server.py new file mode 100644 index 0000000..13e5697 --- /dev/null +++ b/server.py @@ -0,0 +1,57 @@ +from http.server import HTTPServer, BaseHTTPRequestHandler +import lib + + + +class Request(): + def __init__(self, body): + self.body = body + + +# Explanation: https://blog.anvileight.com/posts/simple-python-http-server/ + +class Handler(BaseHTTPRequestHandler): + """ The class responsible for handling all the + different requests made to our server + """ + + def _set_headers(self): + """ Standard header stuff that has to be done """ + self.send_response(200) + self.send_header("Content-type", "text/html") + self.end_headers() + + def do_GET(self): + """ Just serve up our one and only html page """ + self._set_headers() + res = lib.find_get(self.path) + if hasattr(res, 'encode'): + self.wfile.write(res.encode()) + else: + self.wfile.write(res) + + + def do_POST(self): + """ An async ajax request. Find the function from 'posts.py' to handle this + particular request. + """ + self.send_response(200) + self.end_headers() + content_length = int(self.headers['Content-Length']) + body = self.rfile.read(content_length) + request = Request(body) + res = lib.find_post(self.path, request) + self.wfile.write(res.encode()) + + +def run (port = 8314): + server_adress = ('', port) # Should make the port a command line argument + server = HTTPServer(server_adress, Handler) + print(f'Starting server on port: {port}.') + server.serve_forever() + + + +if __name__ == '__main__': + run() + -- cgit v1.2.1