aboutsummaryrefslogtreecommitdiffstats
path: root/lib/caldav/request/calendar_home.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/caldav/request/calendar_home.js')
-rw-r--r--lib/caldav/request/calendar_home.js31
1 files changed, 22 insertions, 9 deletions
diff --git a/lib/caldav/request/calendar_home.js b/lib/caldav/request/calendar_home.js
index d0659bb..e7bed35 100644
--- a/lib/caldav/request/calendar_home.js
+++ b/lib/caldav/request/calendar_home.js
@@ -1,7 +1,7 @@
(function(module, ns) {
- var Errors = ns.require('request/errors');
-
+ var RequestErrors = ns.require('errors');
+
/**
* Creates a propfind request.
*
@@ -72,19 +72,32 @@
return;
}
- principal = findProperty('current-user-principal', data, true);
+ // some fairly dumb allowances
+ principal =
+ findProperty('current-user-principal', data, true) ||
+ findProperty('principal-URL', data, true);
if (!principal) {
- principal = findProperty('principal-URL', data, true);
+ return callback(new Errors.InvalidEntrypoint(
+ 'both current-user-principal and principal-URL are missing'
+ ));
}
+ // per http://tools.ietf.org/html/rfc6638 we get unauthenticated
if ('unauthenticated' in principal) {
- callback(new Errors.UnauthenticatedError());
- } else if (principal.href) {
- callback(null, principal.href);
- } else {
- callback(new Errors.CaldavHttpError(404));
+ return callback(
+ new Errors.Authentication('caldav response is unauthenticated')
+ );
+ }
+
+ // we might have both principal.href & unauthenticated
+ if (principal.href) {
+ return callback(null, principal.href);
}
+
+ callback(
+ new Errors.InvalidEntrypoint('no useful location information found')
+ );
});
},