From f201d0caac4151adafe2f84011abd570a4090c2a Mon Sep 17 00:00:00 2001
From: Jonas Leder <jonas@jonasled.de>
Date: Sat, 17 Jun 2023 22:05:05 +0200
Subject: [PATCH] add option to pass arguments in get request

---
 main.py | 37 +++++++++++++++++++++++++------------
 1 file changed, 25 insertions(+), 12 deletions(-)

diff --git a/main.py b/main.py
index 5428b5b..01a9937 100644
--- a/main.py
+++ b/main.py
@@ -1,17 +1,11 @@
 from http.server import BaseHTTPRequestHandler, HTTPServer
 from json import loads
 from PIL import Image, ImageDraw, ImageFont
-
-class WebServer(BaseHTTPRequestHandler):
-    def sendErrorMessage(self, message, statusCode = 400):
-        self.send_response(statusCode)
-        self.send_header('Content-Type','text/plain')
-        self.end_headers()
-        self.wfile.write(message.encode('utf-8'))
-
-    def do_POST(self):
-        content_length = int(self.headers['Content-Length'])
-        post_data = self.rfile.read(content_length)
+from urllib.parse import urlparse
+from functools import cached_property
+from base64 import b64decode
+class WebServer(BaseHTTPRequestHandler):    
+    def generateImage(self, post_data):
         try:
             data = loads(post_data)
             print(data)
@@ -61,13 +55,32 @@ class WebServer(BaseHTTPRequestHandler):
         self.end_headers()
         rgb_image = img.convert('RGB')
         rgb_image.save(self.wfile, "JPEG", optimize=False, quality=100, progressive=False, subsampling=0, icc_profile=None)
+        
+        
+    @cached_property
+    def url(self):
+        return urlparse(self.path)
+    def sendErrorMessage(self, message, statusCode = 400):
+        self.send_response(statusCode)
+        self.send_header('Content-Type','text/plain')
+        self.end_headers()
+        self.wfile.write(message.encode('utf-8'))
+
+    def do_POST(self):
+        content_length = int(self.headers['Content-Length'])
+        post_data = self.rfile.read(content_length)
+        self.generateImage(post_data)
             
             
     def do_GET(self):
+        if(self.url.path == "/image.jpg"):
+            self.generateImage(b64decode(self.url.query))
+            return
+        
         self.send_response(200)
         self.send_header('Content-Type','text/plain')
         self.end_headers()
-        self.wfile.write(b'Text to Image Server')
+        self.wfile.write(b'Text to Image Server\n')
 
 if __name__ == "__main__":        
     webServer = HTTPServer(("0.0.0.0", 8080), WebServer)
-- 
GitLab