diff options
Diffstat (limited to 'browserlogger.py')
| -rw-r--r-- | browserlogger.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/browserlogger.py b/browserlogger.py new file mode 100644 index 0000000..24f961d --- /dev/null +++ b/browserlogger.py @@ -0,0 +1,45 @@ +from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler +from threading import Thread +from datetime import datetime + +from models import BrowserEvent + + +class MyHandler(BaseHTTPRequestHandler): + + def do_POST(self): + time = datetime.utcfromtimestamp(int(self.headers["time"]) / 1000.) + if self.headers["url"] == "null": + url, title = None, None + else: + url, title = (self.headers["url"].decode("utf8"), + self.headers["title"].decode("utf8")) + 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() |
