Resolve some compatibility issues with Jungle Disk (though none that would've caused failures, as far as I can tell)

Storage username/password are no longer required, since JungleDiskMonitor doesn't require them
This commit is contained in:
Dan Stillman 2008-11-14 12:55:47 +00:00
parent ecfc779b2d
commit 6f9033d206
2 changed files with 19 additions and 26 deletions

View file

@ -8,7 +8,6 @@ Zotero.Sync.Storage = new function () {
this.SUCCESS = 1;
this.ERROR_NO_URL = -1;
this.ERROR_NO_USERNAME = -2;
this.ERROR_NO_PASSWORD = -3;
this.ERROR_OFFLINE = -4;
this.ERROR_UNREACHABLE = -5;
@ -50,18 +49,8 @@ Zotero.Sync.Storage = new function () {
});
}
var username = Zotero.Sync.Storage.username;
if (!username) {
var msg = "Zotero storage username not provided";
Zotero.debug(msg);
throw ({
message: msg,
name: "Z_ERROR_NO_USERNAME",
filename: "storage.js",
toString: function () { return this.message; }
});
}
var password = Zotero.Sync.Storage.password;
if (!password) {
if (username && !password) {
var msg = "Zotero storage password not provided";
Zotero.debug(msg);
throw ({
@ -93,8 +82,10 @@ Zotero.Sync.Storage = new function () {
getService(Components.interfaces.nsIIOService);
try {
var uri = ios.newURI(spec, null, null);
uri.username = username;
uri.password = password;
if (username) {
uri.username = username;
uri.password = password;
}
}
catch (e) {
Zotero.debug(e);
@ -858,6 +849,8 @@ Zotero.Sync.Storage = new function () {
var lastSyncDate = new Date(Zotero.Sync.Server.lastLocalSyncTime * 1000);
Zotero.Utilities.HTTP.WebDAV.doProp("PROPFIND", uri, xmlstr, function (req) {
Zotero.debug(req.responseText);
var funcName = "Zotero.Sync.Storage.purgeOrphanedStorageFiles()";
// Strip XML declaration and convert to E4X
@ -872,13 +865,14 @@ Zotero.Sync.Storage = new function () {
var ios = Components.classes["@mozilla.org/network/io-service;1"].
getService(Components.interfaces.nsIIOService);
var href = ios.newURI(href, null, null);
if (href.path != path) {
_error("DAV:href '" + href.path
+ "' does not match path in " + funcName);
}
href = href.path;
}
if (href.indexOf(path) == -1) {
_error("DAV:href '" + href
+ "' does not begin with path '" + path + "' in " + funcName);
}
// Skip root URI
//
// Try URL-encoded as well, in case there's a '~' or similar
@ -1524,10 +1518,6 @@ Zotero.Sync.Storage = new function () {
callback(null, Zotero.Sync.Storage.ERROR_NO_URL);
return;
case 'Z_ERROR_NO_USERNAME':
callback(null, Zotero.Sync.Storage.ERROR_NO_USERNAME);
return;
case 'Z_ERROR_NO_PASSWORD':
callback(null, Zotero.Sync.Storage.ERROR_NO_PASSWORD);
return;
@ -1768,10 +1758,6 @@ Zotero.Sync.Storage = new function () {
var errorMessage = "Please enter a URL.";
break;
case Zotero.Sync.Storage.ERROR_NO_USERNAME:
var errorMessage = "Please enter a username.";
break;
case Zotero.Sync.Storage.ERROR_NO_PASSWORD:
var errorMessage = "Please enter a password.";
break;

View file

@ -1079,6 +1079,10 @@ Zotero.Utilities.HTTP = new function() {
// Prevent certificate/authentication dialogs from popping up
xmlhttp.mozBackgroundRequest = true;
xmlhttp.open("PUT", uri.spec, true);
// Some servers (e.g., Jungle Disk DAV) return a 200 response code
// with Content-Length: 0, which triggers a "no element found" error
// in Firefox, so we override to text
xmlhttp.overrideMimeType("text/plain");
xmlhttp.onreadystatechange = function() {
_stateChange(xmlhttp, callback);
};
@ -1112,6 +1116,9 @@ Zotero.Utilities.HTTP = new function() {
// Prevent certificate/authentication dialogs from popping up
xmlhttp.mozBackgroundRequest = true;
xmlhttp.open("DELETE", uri.spec, true);
// Firefox 3 throws a "no element found" error even with a
// 204 ("No Content") response, so we override to text
xmlhttp.overrideMimeType("text/plain");
xmlhttp.onreadystatechange = function() {
_stateChange(xmlhttp, callback);
};