from http.server import HTTPServer, SimpleHTTPRequestHandler
import os
import json

BIND_HOST = '192.168.40.105'
PORT = 8000

class HTTPRequestHandler(SimpleHTTPRequestHandler):
    def do_GET(self): 
        super().do_GET()

    def do_POST(self):
        content_length = int(self.headers.get('content-length', 0))
        body = self.rfile.read(content_length)
        data = json.loads(body.decode('utf-8'))
        username = data['name']

        if data.get('mode') == "register":
            if os.path.exists("weights/" + username + ".txt"):
                print(username)
                self.send_response(409)
                self.end_headers()
            else: 
                self.send_response(200)
                self.end_headers()
                with open("weights/" + username + ".txt", "w") as f:
                    for i in range(2): 
                        for j in range(1024): 
                            f.write(str(data['feature_vector'][i][j]))
                            f.write(" ")
                        f.write("\n")
        else:
            if not os.path.exists("weights/" + username + ".txt"): 
                self.send_response(404)
                self.end_headers()
            else:  
                self.send_response(200)
                self.end_headers()
                with open('./ios_ppfr/put.txt', 'w') as f: 
                    f.write(data['id'])
                    f.write("\n")
                    f.write(data['name'])
                    f.write("\n")
                    f.write(str(data['feature_vector']))
                    # for i in range(2): 
                    #     for j in range(1024):
                    #         data['feature_vector'][i][j]

                print("\n")
                print("username                   : " + data['name'])
                print("feature_vector (first 100) : " + str(data['feature_vector'][0][:100]) + "...")
                print("\n\n\n")


print(f'Listening on http://{BIND_HOST}:{PORT}\n')
print("======================= Cloud Server  =======================\n")

httpd = HTTPServer((BIND_HOST, PORT), HTTPRequestHandler)
httpd.serve_forever()
