import time, sys, json
import threading
import http.server
import ssl
import socket
import requests

class CustomHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
    def do_POST(self):
        print("Incoming POST")
        content_length = int(self.headers['Content-Length'])
        post_data = self.rfile.read(content_length).decode('utf-8')
        self.send_response(200)
        self.end_headers()
        self.wfile.write(f"Data posted: {post_data}".encode('utf-8'))

    def do_GET(self):
            print("Incoming GET connection")

def run_server():
    certdir = "/etc/letsencrypt/live/data.t-skylt.se/"
    server_address = ('', 91)
    httpd = http.server.HTTPServer(server_address, lambda *args: CustomHTTPRequestHandler(*args))  # Remove 'server_address' from the lambda
    httpd.socket = ssl.wrap_socket(httpd.socket, keyfile=certdir+'privkey.pem', certfile=certdir+'fullchain.pem', server_side=True)
    print('Starting httpd...\n')
    httpd.serve_forever()

class CustomHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
    def do_POST(self):
        print("Incoming connection POST")
        content_length = int(self.headers['Content-Length'])
        post_data = self.rfile.read(content_length).decode('utf-8')
        with open("incoming.dat","w") as f:
	        f.write(post_data)
        #post_data = json.loads(post_data)
        #print(self.headers)
        print("Wrote: ", post_data)
        return
        _p = ""
        order_info = {}
        for r in post_data:
            print(r)
            #_p += post_data[r]
            order_info[r] = post_data[r]
        _p = post_data["email"]
        
        print(f"Received data: {_p}")  # Add this line to print the data
        print(f"Received data: {str(order_info)}")  # Add this line to print the data
        self.send_response(200)
        self.end_headers()
        self.wfile.write(f"Data posted: {post_data}".encode('utf-8'))
        x = requests.get("http://data.t-skylt.se:89/settings?new_order=" + json.dumps(order_info)).text
        #print("Sending: ", _p)
        print("Sending: ", order_info)




if __name__ == "__main__":
    print("Starting server")
    server_thread = threading.Thread(target=run_server)
    server_thread.daemon = True
    server_thread.start()
    while True:
        try:
            time.sleep(.01)
        except KeyboardInterrupt:
            sys.exit()
