summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThibaut Horel <thibaut.horel@gmail.com>2014-07-10 10:24:12 -0400
committerThibaut Horel <thibaut.horel@gmail.com>2014-07-10 10:24:12 -0400
commit687d859106e795394a3c925c1f98af06802bfc02 (patch)
tree7fb84e317a4215e451b39c2e07b7b2cc78136a50
parent5b61f903f98d6bcab4aa29d624e4e8ce2fe3192a (diff)
downloadtracker-687d859106e795394a3c925c1f98af06802bfc02.tar.gz
Get away from the headers madness
-rw-r--r--browserlogger.py10
-rw-r--r--firefox-addon/lib/main.js43
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) });