from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler from threading import Thread from datetime import datetime from json import loads from models import BrowserEvent class MyHandler(BaseHTTPRequestHandler): def do_POST(self): length = int(self.headers['Content-Length']) data = loads(self.rfile.read(length)) try: time = datetime.utcfromtimestamp(int(data["time"]) / 1000.) except KeyError: print data try: url, title = (data["url"], data["title"]) except KeyError: print data event = BrowserEvent(time=time, url=url, title=title, browser_key=data["key"]) 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()