from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler from threading import Thread from datetime import datetime from urlparse import parse_qs from models import BrowserEvent class MyHandler(BaseHTTPRequestHandler): def do_POST(self): length = int(self.headers['Content-Length']) data = parse_qs(self.rfile.read(length).decode('utf-8')) time = datetime.utcfromtimestamp(int(data["time"][0]) / 1000.) if data["url"][0] == "null": url, title = None, None else: url, title = data["url"][0], data["title"][0] event = BrowserEvent(time=time, url=url, title=title) self.server.logger.info(event) self.send_response(202) self.end_headers() return def log_request(self, code): pass class MyServer(HTTPServer): def __init__(self, addr, handler, logger): HTTPServer.__init__(self, addr, handler) self.logger = logger class ServerThread(Thread): def __init__(self, logger): Thread.__init__(self) self.server = MyServer(("localhost", 8080), MyHandler, logger) def run(self): self.server.serve_forever() def stop(self): self.server.shutdown()