gecko/services/sync/modules/sharing.js

58 lines
1.3 KiB
JavaScript

EXPORTED_SYMBOLS = ["Sharing"];
const Cc = Components.classes;
const Ci = Components.interfaces;
const Cu = Components.utils;
Cu.import("resource://weave/async.js");
Function.prototype.async = Async.sugar;
function Api(dav) {
this._dav = dav;
}
Api.prototype = {
shareWithUsers: function Api_shareWithUsers(path, users, onComplete) {
this._shareGenerator.async(this,
onComplete,
path,
users);
},
_shareGenerator: function Api__shareGenerator(path, users) {
let self = yield;
this._dav.defaultPrefix = "";
let cmd = {"version" : 1,
"directory" : path,
"share_to_users" : users};
let jsonSvc = Cc["@mozilla.org/dom/json;1"].createInstance(Ci.nsIJSON);
let json = jsonSvc.encode(cmd);
this._dav.POST("share/", "cmd=" + escape(json), self.cb);
let xhr = yield;
let retval;
if (xhr.status == 200) {
if (xhr.responseText == "OK") {
retval = {wasSuccessful: true};
} else {
retval = {wasSuccessful: false,
errorText: xhr.responseText};
}
} else {
retval = {wasSuccessful: false,
errorText: "Server returned status " + xhr.status};
}
self.done(retval);
}
};
Sharing = {
Api: Api
};