From e3255e864b6b6fe864ff1a9128927c4cf5d654c5 Mon Sep 17 00:00:00 2001
From: Weilbyte <me@weilbyte.dev>
Date: Fri, 10 Sep 2021 00:02:58 +0200
Subject: [PATCH] Add script to serve dev files

---
 PVEDiscordDark/serve.py | 61 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)
 create mode 100644 PVEDiscordDark/serve.py

diff --git a/PVEDiscordDark/serve.py b/PVEDiscordDark/serve.py
new file mode 100644
index 0000000..477166c
--- /dev/null
+++ b/PVEDiscordDark/serve.py
@@ -0,0 +1,61 @@
+# Script to assist with PVEDiscordDark development
+#
+# By default serves HTTP on port 3000, any *.js request gets the JS script, any *.css request gets the CSS file and any image request gets corresponding image
+# Meant to be used with the "Requestly" browser extension to redirect PVEDD requests from PVE server to localhost:3000
+#
+
+from http.server import HTTPServer, BaseHTTPRequestHandler
+import json
+import os
+
+PORT = 3000
+DIR_SASS = os.path.join(os.path.dirname(__file__), "sass")
+DIR_IMAGES = os.path.join(os.path.dirname(__file__), "images")
+DIR_JS = os.path.join(os.path.dirname(__file__), "js")
+
+
+class Server(BaseHTTPRequestHandler):
+    def log_message(self, format, *args):
+        return
+
+    def _set_headers(self, status, type):
+        self.send_response(status)
+        self.send_header("Content-type", type)
+        self.end_headers()
+
+    def do_GET(self):
+        status = 200
+        type = "application/json"
+        data = None
+
+        file = self.path.rpartition("/")[2]
+        ext = file.rpartition(".")[2]
+
+        if ext == "css":
+            data = open(os.path.join(DIR_SASS, "PVEDiscordDark.css"), "rb").read()
+            type = "text/css"
+        elif ext == "js":
+            data = open(os.path.join(DIR_JS, "PVEDiscordDark.js"), "rb").read()
+            type = "application/javascript"
+        elif ext == "png" or ext == "jpg" or ext == "jpeg":
+            try:
+                data = open(os.path.join(DIR_IMAGES, file), "rb").read()
+                type = f"image/{ext}"
+            except FileNotFoundError:
+                status = 404
+        else:
+            status = 400
+        self._set_headers(status, type)
+        if status == 200:
+            self.wfile.write(data)
+        else:
+            self.wfile.write(json.dumps({"error": status}).encode())
+
+
+if __name__ == "__main__":
+    print(f"Serving on localhost:{PORT}")
+    server = HTTPServer(server_address=("", PORT), RequestHandlerClass=Server)
+    try:
+        server.serve_forever()
+    except KeyboardInterrupt:
+        quit()
-- 
GitLab