diff --git a/hackertray/__init__.py b/hackertray/__init__.py index 5be0862..439b686 100644 --- a/hackertray/__init__.py +++ b/hackertray/__init__.py @@ -25,6 +25,7 @@ import signal from hackernews import HackerNews from chrome import Chrome +from firefox import Firefox from version import Version class HackerNewsApp: diff --git a/hackertray/firefox.py b/hackertray/firefox.py new file mode 100644 index 0000000..56a2041 --- /dev/null +++ b/hackertray/firefox.py @@ -0,0 +1,30 @@ +from __future__ import print_function +import sqlite3 +import shutil +import os +import sys + +class Firefox: + HISTORY_TMP_LOCATION = '/tmp/hackertray.firefox' + HISTORY_FILE_NAME = '/places.sqlite' + @staticmethod + def search(urls, config_folder_path): + Firefox.setup(config_folder_path) + conn = sqlite3.connect(Firefox.HISTORY_TMP_LOCATION) + db = conn.cursor() + result = [] + for url in urls: + db_result = db.execute('SELECT url from moz_places WHERE url=:url',{"url":url}) + if(db.fetchone() == None): + result.append(False) + else: + result.append(True) + os.remove(Firefox.HISTORY_TMP_LOCATION) + return result + @staticmethod + def setup(config_folder_path): + file_name = os.path.abspath(config_folder_path+Firefox.HISTORY_FILE_NAME) + if not os.path.isfile(file_name): + print("ERROR: ", "Could not find Firefox history file", file=sys.stderr) + sys.exit(1) + shutil.copyfile(file_name, Firefox.HISTORY_TMP_LOCATION) \ No newline at end of file diff --git a/test/firefox_test.py b/test/firefox_test.py new file mode 100644 index 0000000..5c5d28a --- /dev/null +++ b/test/firefox_test.py @@ -0,0 +1,15 @@ +import unittest +import os + +from hackertray import Firefox + +class ChromeTest(unittest.TestCase): + def runTest(self): + config_folder_path = os.getcwd()+'/test/' + data = Firefox.search([ + "http://www.hckrnews.com/", + "http://www.google.com/", + "http://wiki.ubuntu.com/", + "http://invalid_url/"], + config_folder_path) + self.assertTrue(data == [True,True,True,False]) \ No newline at end of file diff --git a/test/places.sqlite b/test/places.sqlite new file mode 100644 index 0000000..4d6c000 Binary files /dev/null and b/test/places.sqlite differ