OxFF/OxFF/modules/oxff.jsm
2010-08-17 12:42:37 +02:00

65 lines
2.1 KiB
JavaScript

// -*- coding: utf-8 -*-
// vi:si:et:sw=4:sts=4:ts=4:ft=js
let EXPORTED_SYMBOLS = [ "oxff" ];
const Cc = Components.classes;
const Ci = Components.interfaces;
Components.utils.import("resource://ox/utils.jsm");
let oxff = {
getDBFile: function() {
var file = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties)
.get("ProfD", Ci.nsIFile);
file.append("OxFF.sqlite");
return file;
},
getDB: function() {
var file = this.getDBFile();
var storageService = Cc["@mozilla.org/storage/service;1"].getService(Ci.mozIStorageService);
var conn = storageService.openDatabase(file);
conn.executeSimpleSQL("CREATE TABLE IF NOT EXISTS site (site varchar(1024) unique, access INT)");
conn.executeSimpleSQL("CREATE TABLE IF NOT EXISTS setting (key varchar(1024) unique, value text)");
return conn;
},
get: function(key, value) {
var conn = this.getDB();
var q = conn.createStatement("SELECT value FROM setting WHERE key = :key");
q.params.key = key;
if (q.executeStep())
value = q.row.value;
q.finalize();
return value;
},
set: function(key, value) {
var conn = this.getDB();
var q = conn.createStatement("INSERT OR REPLACE INTO setting values (:key, :value)");
q.params.key = key;
q.params.value = value;
q.executeStep();
q.finalize();
},
access: function(site, access) {
var conn = oxff.getDB();
var q = conn.createStatement("INSERT OR REPLACE INTO site values (:site, :access)");
q.params.site = site;
if (access)
q.params.access = 1;
else
q.params.access = 0;
q.executeStep();
q.finalize();
},
extractVideo: function(oshash, url, profile, callback, progress) {
var conn = this.getDB();
var q = conn.createStatement("SELECT path FROM file WHERE oshash = :oshash");
q.params.oshash = oshash;
if (q.executeStep())
var path = q.row.path;
q.finalize();
ox.subprocess(command, options, callback);
},
};