#!/usr/bin/env python3
import http.server, json, sys, threading

PORT = 8080
RESULT = {}
DONE = threading.Event()

class H(http.server.SimpleHTTPRequestHandler):
    def do_POST(self):
        if self.path == '/result':
            n = int(self.headers.get('Content-Length', '0'))
            body = self.rfile.read(n).decode('utf-8', 'replace')
            try:
                RESULT.update(json.loads(body))
            except Exception:
                RESULT['raw'] = body
            sys.stderr.write('[server] RESULT: ' + body + '\n')
            sys.stderr.flush()
            self.send_response(204)
            self.end_headers()
            DONE.set()
        else:
            self.send_error(404)

    def log_message(self, fmt, *args):
        pass

if __name__ == '__main__':
    http.server.ThreadingHTTPServer.allow_reuse_address = True
    if len(sys.argv) > 1:
        PORT = int(sys.argv[1])
    httpd = http.server.ThreadingHTTPServer(('127.0.0.1', PORT), H)
    sys.stderr.write(f'[server] listening on http://127.0.0.1:{PORT}/poc.html\n')
    sys.stderr.flush()
    httpd.serve_forever()
