diff options
| author | Thibaut Horel <thibaut.horel@gmail.com> | 2014-07-10 10:24:12 -0400 |
|---|---|---|
| committer | Thibaut Horel <thibaut.horel@gmail.com> | 2014-07-10 10:24:12 -0400 |
| commit | 687d859106e795394a3c925c1f98af06802bfc02 (patch) | |
| tree | 7fb84e317a4215e451b39c2e07b7b2cc78136a50 | |
| parent | 5b61f903f98d6bcab4aa29d624e4e8ce2fe3192a (diff) | |
| download | tracker-687d859106e795394a3c925c1f98af06802bfc02.tar.gz | |
Get away from the headers madness
| -rw-r--r-- | browserlogger.py | 10 | ||||
| -rw-r--r-- | firefox-addon/lib/main.js | 43 |
2 files changed, 23 insertions, 30 deletions
diff --git a/browserlogger.py b/browserlogger.py index 24f961d..5466880 100644 --- a/browserlogger.py +++ b/browserlogger.py @@ -1,6 +1,7 @@ from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler from threading import Thread from datetime import datetime +from urlparse import parse_qs from models import BrowserEvent @@ -8,12 +9,13 @@ from models import BrowserEvent class MyHandler(BaseHTTPRequestHandler): def do_POST(self): - time = datetime.utcfromtimestamp(int(self.headers["time"]) / 1000.) - if self.headers["url"] == "null": + 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 = (self.headers["url"].decode("utf8"), - self.headers["title"].decode("utf8")) + url, title = data["url"][0], data["title"][0] event = BrowserEvent(time=time, url=url, title=title) self.server.logger.info(event) diff --git a/firefox-addon/lib/main.js b/firefox-addon/lib/main.js index 2c2786d..c5446f2 100644 --- a/firefox-addon/lib/main.js +++ b/firefox-addon/lib/main.js @@ -2,33 +2,24 @@ var windows = require("sdk/windows").browserWindows; var tabs = require("sdk/tabs"); var Request = require("sdk/request").Request; var prefs = require("sdk/simple-prefs").prefs; +var XMLHttpRequest = require("sdk/net/xhr").XMLHttpRequest; -function logUrl(tab) { - if (tab !== tabs.activeTab) { - return; +function log(url, title){ + var xhr = new XMLHttpRequest(); + xhr.open("POST", prefs.callbackUrl); + var data = "url=" + url; + data += "&time=" + Date.now(); + data += "&title=" + title; + xhr.send(data); +} + +function logTab(tab) { + if (tab.id === tabs.activeTab.id) { + log(tab.url, tab.title); } - Request({ - url: prefs.callbackUrl, - headers: { - "url": unescape(encodeURIComponent(tab.url)), - "time": Date.now(), - "title": unescape(encodeURIComponent(tab.title)), - } - }).post(); }; -function logDesactivate() { - Request({ - url: prefs.callbackUrl, - headers: { - "url": null, - "time": Date.now(), - "title": null, - } - }).post(); -} - -tabs.on("activate", function () { logUrl(tabs.activeTab) }); -tabs.on("pageshow", function(tab) { logUrl(tab) }); -windows.on("activate", function () { logUrl(tabs.activeTab) }); -windows.on("deactivate", function () { logDesactivate() }); +tabs.on("activate", function () { logTab(tabs.activeTab) }); +tabs.on("pageshow", logTab ); +windows.on("activate", function () { logTab(tabs.activeTab) }); +windows.on("deactivate", function () { log(null, null) }); |
