summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThibaut Horel <thibaut.horel@gmail.com>2014-07-08 08:56:02 -0400
committerThibaut Horel <thibaut.horel@gmail.com>2014-07-08 08:56:02 -0400
commitd2496696d4ca73b9a8a43a42f31959ad6dc18c7a (patch)
tree3c58c34d816b55493ed1df88b4d392285fd78602
parentd1a77fac18e25df1093172f15fb8925c4545a7b5 (diff)
downloadtracker-d2496696d4ca73b9a8a43a42f31959ad6dc18c7a.tar.gz
Proof of concept for Firefox logging
-rw-r--r--firefox-addon/README.md0
-rw-r--r--firefox-addon/doc/main.md0
-rw-r--r--firefox-addon/lib/main.js17
-rw-r--r--firefox-addon/package.json16
-rw-r--r--firefox-addon/test/test-main.js12
-rw-r--r--firefox-logger.py18
6 files changed, 63 insertions, 0 deletions
diff --git a/firefox-addon/README.md b/firefox-addon/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/firefox-addon/README.md
diff --git a/firefox-addon/doc/main.md b/firefox-addon/doc/main.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/firefox-addon/doc/main.md
diff --git a/firefox-addon/lib/main.js b/firefox-addon/lib/main.js
new file mode 100644
index 0000000..98c57ae
--- /dev/null
+++ b/firefox-addon/lib/main.js
@@ -0,0 +1,17 @@
+var tabs = require("sdk/tabs");
+var Request = require("sdk/request").Request;
+var prefs = require("sdk/simple-prefs").prefs;
+
+function logUrl(tab) {
+ Request({
+ url: prefs.callbackUrl,
+ headers: {
+ "url": unescape(encodeURIComponent(tab.url)),
+ "time": Date.now(),
+ "title": unescape(encodeURIComponent(tab.title)),
+ }
+ }).post();
+};
+
+tabs.on("activate", function () { logUrl(tabs.activeTab) });
+tabs.on("pageshow", function(tab) { logUrl(tab) });
diff --git a/firefox-addon/package.json b/firefox-addon/package.json
new file mode 100644
index 0000000..b655e9c
--- /dev/null
+++ b/firefox-addon/package.json
@@ -0,0 +1,16 @@
+{
+ "name": "url-logger",
+ "title": "url-logger",
+ "id": "jid1-KLw59UduPgRwag",
+ "description": "Notify a callback url whenever a page is loaded/shown.",
+ "author": "Thibaut Horel <thibaut@horel.org>",
+ "license": "MPL 2.0",
+ "version": "0.1",
+ "preferences": [{
+ "name": "callbackUrl",
+ "type": "string",
+ "title": "CallbackĀ URL",
+ "description": "URL to be notified on page load/show.",
+ "value": "http://localhost:8080"
+ }]
+}
diff --git a/firefox-addon/test/test-main.js b/firefox-addon/test/test-main.js
new file mode 100644
index 0000000..147f98a
--- /dev/null
+++ b/firefox-addon/test/test-main.js
@@ -0,0 +1,12 @@
+var main = require("./main");
+
+exports["test main"] = function(assert) {
+ assert.pass("Unit test running!");
+};
+
+exports["test main async"] = function(assert, done) {
+ assert.pass("async Unit test running!");
+ done();
+};
+
+require("sdk/test").run(exports);
diff --git a/firefox-logger.py b/firefox-logger.py
new file mode 100644
index 0000000..16d2674
--- /dev/null
+++ b/firefox-logger.py
@@ -0,0 +1,18 @@
+from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
+from datetime import datetime
+
+
+class MyHandler(BaseHTTPRequestHandler):
+
+ def do_POST(self):
+ time = datetime.utcfromtimestamp(int(self.headers["time"]) / 1000.)
+ print time.isoformat(), self.headers["url"], self.headers["title"]
+ self.send_response(202)
+ self.end_headers()
+ return
+
+ def log_request(self, code):
+ pass
+
+server = HTTPServer(("localhost", 8080), MyHandler)
+server.serve_forever()