diff --git a/main.py b/main.py index 5428b5b6b4d3ecfa7cd974fd240c7a31cf687855..01a9937a4a41ae357f70013c71fd5ade5e9115a5 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)