-
Notifications
You must be signed in to change notification settings - Fork 7
/
secretstore.js
85 lines (81 loc) · 2.47 KB
/
secretstore.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/*
* secretstore.js - to save data in libsecret
*/
const Lang = imports.lang;
const System = imports.system;
const Format = imports.format;
String.prototype.format = Format.format;
const GLib = imports.gi.GLib;
const Secret = imports.gi.Secret;
const SecretStoreError = function(errormsg) {
this.message = errormsg;
}
SecretStoreError.prototype = new Error();
var SecretStore = new Lang.Class({
Name: "SecretStore",
_init: function(props) {
props = props || {};
this.app = props.app || GLib.path_get_basename(System.programInvocationName);
this.schema = props.schema || Secret.Schema.new('schema.' + this.app,
Secret.SchemaFlags.NONE,
{'app': Secret.SchemaAttributeType.STRING,
'key': Secret.SchemaAttributeType.STRING});
},
store: function(key, value, attributes, cancellable, callback) {
cancellable = cancellable || null;
if(callback) {
Secret.password_store(this.schema,
attributes || {'app': this.app, 'key': key},
Secret.COLLECTION_DEFAULT,
key,
value,
cancellable,
Lang.bind(this, function(source, result, callback) {
callback(Secret.password_store_finish(result));
}, callback));
return true;
}
else {
return Secret.password_store_sync(this.schema,
attributes || {'app': this.app, 'key': key},
Secret.COLLECTION_DEFAULT,
key,
value,
cancellable);
}
},
retrive: function(key, attributes, cancellable, callback) {
cancellable = cancellable || null;
if(callback) {
Secret.password_lookup(this.schema,
attributes || {'app': this.app, 'key': key},
cancellable,
Lang.bind(this, function(source, result, callback) {
callback(Secret.password_lookup_finish(result));
}, callback));
return true;
}
else {
return Secret.password_lookup_sync(this.schema,
attributes || {'app': this.app, 'key': key},
cancellable);
}
},
remove: function(key, attributes, cancellable, callback) {
cancellable = cancellable || null;
if(callback) {
Secret.password_clear(this.schema,
attributes || {'app': this.app, 'key': key},
cancellable,
Lang.bind(this, function(source, result, callback) {
callback(Secret.password_clear_finish(result));
}, callback));
return true;
}
else {
return Secret.password_clear_sync(this.schema,
attributes || {'app': this.app, 'key': key},
cancellable);
}
}
});