function Account(options) { _classCallCheck(this, Account); Object.assign(this, { server: null, credentials: null, rootUrl: null, principalUrl: null, homeUrl: null, calendars: null, addressBooks: null }, options); }
...
while (1) switch (context$1$0.prev = context$1$0.next) {
case 0:
options = Object.assign({}, defaults, options);
if (typeof options.loadObjects !== 'boolean') {
options.loadObjects = options.loadCollections;
}
account = new _model.Account({
server: options.server,
credentials: options.xhr.credentials
});
context$1$0.next = 5;
return serviceDiscovery(account, options);
case 5:
...
function AddressBook(options) { _classCallCheck(this, AddressBook); _get(Object.getPrototypeOf(AddressBook.prototype), "constructor", this).call(this, options); }
...
case 4:
responses = context$1$0.sent;
addressBooks = responses.filter(function (res) {
return typeof res.props.displayname === 'string';
}).map(function (res) {
debug('Found address book named ' + res.props.displayname + ',\n props: ' + JSON.stringify(res
.props));
return new _model.AddressBook({
data: res,
account: account,
url: _url2['default'].resolve(account.rootUrl, res.href),
ctag: res.props.getctag,
displayName: res.props.displayname,
resourcetype: res.props.resourcetype,
syncToken: res.props.syncToken
...
function Calendar(options) { _classCallCheck(this, Calendar); _get(Object.getPrototypeOf(Calendar.prototype), "constructor", this).call(this, options); Object.assign(this, { components: null, timezone: null }, options); }
...
// We only want the calendar if it contains iCalendar objects.
var components = res.props.supportedCalendarComponentSet || [];
return components.reduce(function (hasObjs, component) {
return hasObjs || ICAL_OBJS.has(component);
}, false);
}).map(function (res) {
debug('Found calendar ' + res.props.displayname + ',\n props: ' + JSON.stringify(res.props));
return new _model.Calendar({
data: res,
account: account,
description: res.props.calendarDescription,
timezone: res.props.calendarTimezone,
url: _url2['default'].resolve(account.rootUrl, res.href),
ctag: res.props.getctag,
displayName: res.props.displayname,
...
function CalendarObject(options) { _classCallCheck(this, CalendarObject); _get(Object.getPrototypeOf(CalendarObject.prototype), "constructor", this).call(this, options); Object.assign(this, { calendar: null, calendarData: null }, options); }
...
sandbox: options.sandbox
});
case 5:
responses = context$1$0.sent;
return context$1$0.abrupt('return', responses.map(function (res) {
debug('Found calendar object with url ' + res.href);
return new _model.CalendarObject({
data: res,
calendar: calendar,
url: _url2['default'].resolve(calendar.account.rootUrl, res.href),
etag: res.props.getetag,
calendarData: res.props.calendarData
});
}));
...
function Client(xhr) { var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; _classCallCheck(this, Client); this.xhr = xhr; Object.assign(this, options); // Expose internal modules for unit testing this._accounts = accounts; this._calendars = calendars; this._contacts = contacts; }
...
- [request](#request)
- [dav.request.addressBookQuery(options)](#davrequestaddressbookqueryoptions)
- [dav.request.basic(options)](#davrequestbasicoptions)
- [dav.request.calendarQuery(options)](#davrequestcalendarqueryoptions)
- [dav.request.propfind(options)](#davrequestpropfindoptions)
- [dav.request.syncCollection(options)](#davrequestsynccollectionoptions)
- [Client](#client)
- [dav.Client(xhr, options)](#davclientxhr-options)
- [dav.Client.send(req, options)](#davclientsendreq-options)
- [etc](#etc)
- [dav.ns](#davns)
- [Example Usage](#example-usage)
- [Using the lower-level webdav request api](#using-the-lower-level-webdav-request-api)
- [Debugging](#debugging)
...
function Credentials(options) { _classCallCheck(this, Credentials); Object.assign(this, { username: null, password: null, clientId: null, clientSecret: null, authorizationCode: null, redirectUrl: null, tokenUrl: null, accessToken: null, refreshToken: null, expiration: null }, options); }
...
### Example Usage
```js
var dav = require('dav');
var xhr = new dav.transport.Basic(
new dav.Credentials({
username: 'xxx',
password: 'xxx'
})
);
dav.createAccount({ server: 'http://dav.example.com', xhr: xhr })
.then(function(account) {
...
function DAVCollection(options) { _classCallCheck(this, DAVCollection); Object.assign(this, { data: null, objects: null, account: null, ctag: null, description: null, displayName: null, reports: null, resourcetype: null, syncToken: null, url: null }, options); }
n/a
function DAVObject(options) { _classCallCheck(this, DAVObject); Object.assign(this, { data: null, etag: null, url: null }, options); }
n/a
function Request() { var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; _classCallCheck(this, Request); Object.assign(this, { method: null, requestData: null, transformRequest: null, transformResponse: null, onerror: null }, options); }
n/a
function Sandbox() { _classCallCheck(this, Sandbox); this.requestList = []; }
...
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
- [dav.syncAddressBook(addressBook, options)](#davsyncaddressbookaddressbook-options)
- [dav.syncCarddavAccount(account, options)](#davsynccarddavaccountaccount-options)
- [sandbox](#sandbox)
- [dav.Sandbox()](#davsandbox)
- [transport](#transport)
- [dav.transport.Basic(credentials)](#davtransportbasiccredentials)
- [dav.transport.Basic.send(request, options)](#davtransportbasicsendrequest-options)
- [dav.transport.OAuth2(credentials)](#davtransportoauth2credentials)
- [dav.transport.OAuth2.send(request, options)](#davtransportoauth2sendrequest-options)
- [request](#request)
- [dav.request.addressBookQuery(options)](#davrequestaddressbookqueryoptions)
...
function VCard(options) { _classCallCheck(this, VCard); _get(Object.getPrototypeOf(VCard.prototype), "constructor", this).call(this, options); Object.assign(this, { addressBook: null, addressData: null }, options); }
...
sandbox: options.sandbox
});
case 4:
responses = context$1$0.sent;
return context$1$0.abrupt('return', responses.map(function (res) {
debug('Found vcard with url ' + res.href);
return new _model.VCard({
data: res,
addressBook: addressBook,
url: _url2['default'].resolve(addressBook.account.rootUrl, res.href),
etag: res.props.getetag,
addressData: res.props.addressData
});
}));
...
function createPromise() { return co.call(this, fn.apply(this, arguments)); }
...
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
**Table of Contents** *generated with [DocToc](http://doctoc.herokuapp.com/)*
- [API](#api)
- [accounts](#accounts)
- [dav.createAccount(options)](#davcreateaccountoptions)
- [calendars](#calendars)
- [dav.createCalendarObject(calendar, options)](#davcreatecalendarobjectcalendar-options)
- [dav.updateCalendarObject(calendarObject, options)](#davupdatecalendarobjectcalendarobject-options)
- [dav.deleteCalendarObject(calendarObject, options)](#davdeletecalendarobjectcalendarobject-options)
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
...
function createCalendarObject(calendar, options) { var objectUrl = _url2['default'].resolve(calendar.url, options.filename); return webdav.createObject(objectUrl, options.data, options); }
...
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
**Table of Contents** *generated with [DocToc](http://doctoc.herokuapp.com/)*
- [API](#api)
- [accounts](#accounts)
- [dav.createAccount(options)](#davcreateaccountoptions)
- [calendars](#calendars)
- [dav.createCalendarObject(calendar, options)](#davcreatecalendarobjectcalendar-options
)
- [dav.updateCalendarObject(calendarObject, options)](#davupdatecalendarobjectcalendarobject-options)
- [dav.deleteCalendarObject(calendarObject, options)](#davdeletecalendarobjectcalendarobject-options)
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
...
function createCard(addressBook, options) { var objectUrl = _url2['default'].resolve(addressBook.url, options.filename); return webdav.createObject(objectUrl, options.data, options); }
...
- [calendars](#calendars)
- [dav.createCalendarObject(calendar, options)](#davcreatecalendarobjectcalendar-options)
- [dav.updateCalendarObject(calendarObject, options)](#davupdatecalendarobjectcalendarobject-options)
- [dav.deleteCalendarObject(calendarObject, options)](#davdeletecalendarobjectcalendarobject-options)
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
- [dav.syncAddressBook(addressBook, options)](#davsyncaddressbookaddressbook-options)
- [dav.syncCarddavAccount(account, options)](#davsynccarddavaccountaccount-options)
- [sandbox](#sandbox)
- [dav.Sandbox()](#davsandbox)
- [transport](#transport)
...
function createSandbox() { return new Sandbox(); }
...
```
### sandbox
#### dav.Sandbox()
Create a request sandbox. There is also a deprecated interface
`dav.createSandbox()`. Add requests to the sandbox like so:
```js
var sandbox = new dav.Sandbox();
// sandbox instanceof Sandbox
dav.createAccount({
username: 'Yoshi',
password: 'babybowsersoscaryomg',
...
function debug(topic) { return function (message) { if (debug.enabled) { console.log("[" + topic + "] " + message); } }; }
n/a
function deleteCalendarObject(calendarObject, options) { return webdav.deleteObject(calendarObject.url, calendarObject.etag, options); }
...
- [API](#api)
- [accounts](#accounts)
- [dav.createAccount(options)](#davcreateaccountoptions)
- [calendars](#calendars)
- [dav.createCalendarObject(calendar, options)](#davcreatecalendarobjectcalendar-options)
- [dav.updateCalendarObject(calendarObject, options)](#davupdatecalendarobjectcalendarobject-options)
- [dav.deleteCalendarObject(calendarObject, options)](#davdeletecalendarobjectcalendarobject
-options)
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
- [dav.syncAddressBook(addressBook, options)](#davsyncaddressbookaddressbook-options)
...
function deleteCard(card, options) { return webdav.deleteObject(card.url, card.etag, options); }
...
- [dav.updateCalendarObject(calendarObject, options)](#davupdatecalendarobjectcalendarobject-options)
- [dav.deleteCalendarObject(calendarObject, options)](#davdeletecalendarobjectcalendarobject-options)
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
- [dav.syncAddressBook(addressBook, options)](#davsyncaddressbookaddressbook-options)
- [dav.syncCarddavAccount(account, options)](#davsynccarddavaccountaccount-options)
- [sandbox](#sandbox)
- [dav.Sandbox()](#davsandbox)
- [transport](#transport)
- [dav.transport.Basic(credentials)](#davtransportbasiccredentials)
- [dav.transport.Basic.send(request, options)](#davtransportbasicsendrequest-options)
...
function createPromise() { return co.call(this, fn.apply(this, arguments)); }
n/a
function createPromise() { return co.call(this, fn.apply(this, arguments)); }
n/a
function createPromise() { return co.call(this, fn.apply(this, arguments)); }
n/a
function createPromise() { return co.call(this, fn.apply(this, arguments)); }
n/a
function syncAddressBook(addressBook, options) { options.basicSync = basicSync; options.webdavSync = webdavSync; return webdav.syncCollection(addressBook, options); }
...
- [dav.deleteCalendarObject(calendarObject, options)](#davdeletecalendarobjectcalendarobject-options)
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
- [dav.syncAddressBook(addressBook, options)](#davsyncaddressbookaddressbook-options
)
- [dav.syncCarddavAccount(account, options)](#davsynccarddavaccountaccount-options)
- [sandbox](#sandbox)
- [dav.Sandbox()](#davsandbox)
- [transport](#transport)
- [dav.transport.Basic(credentials)](#davtransportbasiccredentials)
- [dav.transport.Basic.send(request, options)](#davtransportbasicsendrequest-options)
- [dav.transport.OAuth2(credentials)](#davtransportoauth2credentials)
...
function createPromise() { return co.call(this, fn.apply(this, arguments)); }
...
- [accounts](#accounts)
- [dav.createAccount(options)](#davcreateaccountoptions)
- [calendars](#calendars)
- [dav.createCalendarObject(calendar, options)](#davcreatecalendarobjectcalendar-options)
- [dav.updateCalendarObject(calendarObject, options)](#davupdatecalendarobjectcalendarobject-options)
- [dav.deleteCalendarObject(calendarObject, options)](#davdeletecalendarobjectcalendarobject-options)
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
- [dav.syncAddressBook(addressBook, options)](#davsyncaddressbookaddressbook-options)
- [dav.syncCarddavAccount(account, options)](#davsynccarddavaccountaccount-options)
- [sandbox](#sandbox)
...
function syncCalendar(calendar, options) { options.basicSync = basicSync; options.webdavSync = webdavSync; return webdav.syncCollection(calendar, options); }
...
- [API](#api)
- [accounts](#accounts)
- [dav.createAccount(options)](#davcreateaccountoptions)
- [calendars](#calendars)
- [dav.createCalendarObject(calendar, options)](#davcreatecalendarobjectcalendar-options)
- [dav.updateCalendarObject(calendarObject, options)](#davupdatecalendarobjectcalendarobject-options)
- [dav.deleteCalendarObject(calendarObject, options)](#davdeletecalendarobjectcalendarobject-options)
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
- [dav.syncAddressBook(addressBook, options)](#davsyncaddressbookaddressbook-options)
- [dav.syncCarddavAccount(account, options)](#davsynccarddavaccountaccount-options)
...
function createPromise() { return co.call(this, fn.apply(this, arguments)); }
...
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
- [dav.syncAddressBook(addressBook, options)](#davsyncaddressbookaddressbook-options)
- [dav.syncCarddavAccount(account, options)](#davsynccarddavaccountaccount-options)
- [sandbox](#sandbox)
- [dav.Sandbox()](#davsandbox)
- [transport](#transport)
- [dav.transport.Basic(credentials)](#davtransportbasiccredentials)
- [dav.transport.Basic.send(request, options)](#davtransportbasicsendrequest-options)
- [dav.transport.OAuth2(credentials)](#davtransportoauth2credentials)
- [dav.transport.OAuth2.send(request, options)](#davtransportoauth2sendrequest-options)
...
function updateCalendarObject(calendarObject, options) { return webdav.updateObject(calendarObject.url, calendarObject.calendarData, calendarObject.etag, options); }
...
**Table of Contents** *generated with [DocToc](http://doctoc.herokuapp.com/)*
- [API](#api)
- [accounts](#accounts)
- [dav.createAccount(options)](#davcreateaccountoptions)
- [calendars](#calendars)
- [dav.createCalendarObject(calendar, options)](#davcreatecalendarobjectcalendar-options)
- [dav.updateCalendarObject(calendarObject, options)](#davupdatecalendarobjectcalendarobject
-options)
- [dav.deleteCalendarObject(calendarObject, options)](#davdeletecalendarobjectcalendarobject-options)
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
...
function updateCard(card, options) { return webdav.updateObject(card.url, card.addressData, card.etag, options); }
...
- [dav.createCalendarObject(calendar, options)](#davcreatecalendarobjectcalendar-options)
- [dav.updateCalendarObject(calendarObject, options)](#davupdatecalendarobjectcalendarobject-options)
- [dav.deleteCalendarObject(calendarObject, options)](#davdeletecalendarobjectcalendarobject-options)
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
- [dav.syncAddressBook(addressBook, options)](#davsyncaddressbookaddressbook-options)
- [dav.syncCarddavAccount(account, options)](#davsynccarddavaccountaccount-options)
- [sandbox](#sandbox)
- [dav.Sandbox()](#davsandbox)
- [transport](#transport)
- [dav.transport.Basic(credentials)](#davtransportbasiccredentials)
...
function createPromise() { return co.call(this, fn.apply(this, arguments)); }
...
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
**Table of Contents** *generated with [DocToc](http://doctoc.herokuapp.com/)*
- [API](#api)
- [accounts](#accounts)
- [dav.createAccount(options)](#davcreateaccountoptions)
- [calendars](#calendars)
- [dav.createCalendarObject(calendar, options)](#davcreatecalendarobjectcalendar-options)
- [dav.updateCalendarObject(calendarObject, options)](#davupdatecalendarobjectcalendarobject-options)
- [dav.deleteCalendarObject(calendarObject, options)](#davdeletecalendarobjectcalendarobject-options)
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
...
function callee$0$0(options) { var account, key, loadCollections, loadObjects, collections; return regeneratorRuntime.wrap(function callee$0$0$(context$1$0) { while (1) switch (context$1$0.prev = context$1$0.next) { case 0: options = Object.assign({}, defaults, options); if (typeof options.loadObjects !== 'boolean') { options.loadObjects = options.loadCollections; } account = new _model.Account({ server: options.server, credentials: options.xhr.credentials }); context$1$0.next = 5; return serviceDiscovery(account, options); case 5: account.rootUrl = context$1$0.sent; context$1$0.next = 8; return principalUrl(account, options); case 8: account.principalUrl = context$1$0.sent; context$1$0.next = 11; return homeUrl(account, options); case 11: account.homeUrl = context$1$0.sent; if (options.loadCollections) { context$1$0.next = 14; break; } return context$1$0.abrupt('return', account); case 14: key = undefined, loadCollections = undefined, loadObjects = undefined; if (options.accountType === 'caldav') { key = 'calendars'; loadCollections = _calendars.listCalendars; loadObjects = _calendars.listCalendarObjects; } else if (options.accountType === 'carddav') { key = 'addressBooks'; loadCollections = _contacts.listAddressBooks; loadObjects = _contacts.listVCards; } context$1$0.next = 18; return loadCollections(account, options); case 18: collections = context$1$0.sent; account[key] = collections; if (options.loadObjects) { context$1$0.next = 22; break; } return context$1$0.abrupt('return', account); case 22: context$1$0.next = 24; return collections.map(_co2['default'].wrap(regeneratorRuntime.mark(function callee$1$0(collection) { return regeneratorRuntime.wrap(function callee$1$0$(context$2$0) { while (1) switch (context$2$0.prev = context$2$0.next) { case 0: context$2$0.prev = 0; context$2$0.next = 3; return loadObjects(collection, options); case 3: collection.objects = context$2$0.sent; context$2$0.next = 9; break; case 6: context$2$0.prev = 6; context$2$0.t0 = context$2$0['catch'](0); collection.error = context$2$0.t0; case 9: case 'end': return context$2$0.stop(); } }, callee$1$0, this, [[0, 6]]); }))); case 24: account[key] = account[key].filter(function (collection) { return !collection.error; }); return context$1$0.abrupt('return', account); case 26: case 'end': return context$1$0.stop(); } }, callee$0$0, this); }
n/a
function Account(options) { _classCallCheck(this, Account); Object.assign(this, { server: null, credentials: null, rootUrl: null, principalUrl: null, homeUrl: null, calendars: null, addressBooks: null }, options); }
...
while (1) switch (context$1$0.prev = context$1$0.next) {
case 0:
options = Object.assign({}, defaults, options);
if (typeof options.loadObjects !== 'boolean') {
options.loadObjects = options.loadCollections;
}
account = new _model.Account({
server: options.server,
credentials: options.xhr.credentials
});
context$1$0.next = 5;
return serviceDiscovery(account, options);
case 5:
...
function AddressBook(options) { _classCallCheck(this, AddressBook); _get(Object.getPrototypeOf(AddressBook.prototype), "constructor", this).call(this, options); }
...
case 4:
responses = context$1$0.sent;
addressBooks = responses.filter(function (res) {
return typeof res.props.displayname === 'string';
}).map(function (res) {
debug('Found address book named ' + res.props.displayname + ',\n props: ' + JSON.stringify(res
.props));
return new _model.AddressBook({
data: res,
account: account,
url: _url2['default'].resolve(account.rootUrl, res.href),
ctag: res.props.getctag,
displayName: res.props.displayname,
resourcetype: res.props.resourcetype,
syncToken: res.props.syncToken
...
function Calendar(options) { _classCallCheck(this, Calendar); _get(Object.getPrototypeOf(Calendar.prototype), "constructor", this).call(this, options); Object.assign(this, { components: null, timezone: null }, options); }
...
// We only want the calendar if it contains iCalendar objects.
var components = res.props.supportedCalendarComponentSet || [];
return components.reduce(function (hasObjs, component) {
return hasObjs || ICAL_OBJS.has(component);
}, false);
}).map(function (res) {
debug('Found calendar ' + res.props.displayname + ',\n props: ' + JSON.stringify(res.props));
return new _model.Calendar({
data: res,
account: account,
description: res.props.calendarDescription,
timezone: res.props.calendarTimezone,
url: _url2['default'].resolve(account.rootUrl, res.href),
ctag: res.props.getctag,
displayName: res.props.displayname,
...
function CalendarObject(options) { _classCallCheck(this, CalendarObject); _get(Object.getPrototypeOf(CalendarObject.prototype), "constructor", this).call(this, options); Object.assign(this, { calendar: null, calendarData: null }, options); }
...
sandbox: options.sandbox
});
case 5:
responses = context$1$0.sent;
return context$1$0.abrupt('return', responses.map(function (res) {
debug('Found calendar object with url ' + res.href);
return new _model.CalendarObject({
data: res,
calendar: calendar,
url: _url2['default'].resolve(calendar.account.rootUrl, res.href),
etag: res.props.getetag,
calendarData: res.props.calendarData
});
}));
...
function Client(xhr) { var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; _classCallCheck(this, Client); this.xhr = xhr; Object.assign(this, options); // Expose internal modules for unit testing this._accounts = accounts; this._calendars = calendars; this._contacts = contacts; }
...
- [request](#request)
- [dav.request.addressBookQuery(options)](#davrequestaddressbookqueryoptions)
- [dav.request.basic(options)](#davrequestbasicoptions)
- [dav.request.calendarQuery(options)](#davrequestcalendarqueryoptions)
- [dav.request.propfind(options)](#davrequestpropfindoptions)
- [dav.request.syncCollection(options)](#davrequestsynccollectionoptions)
- [Client](#client)
- [dav.Client(xhr, options)](#davclientxhr-options)
- [dav.Client.send(req, options)](#davclientsendreq-options)
- [etc](#etc)
- [dav.ns](#davns)
- [Example Usage](#example-usage)
- [Using the lower-level webdav request api](#using-the-lower-level-webdav-request-api)
- [Debugging](#debugging)
...
function Credentials(options) { _classCallCheck(this, Credentials); Object.assign(this, { username: null, password: null, clientId: null, clientSecret: null, authorizationCode: null, redirectUrl: null, tokenUrl: null, accessToken: null, refreshToken: null, expiration: null }, options); }
...
### Example Usage
```js
var dav = require('dav');
var xhr = new dav.transport.Basic(
new dav.Credentials({
username: 'xxx',
password: 'xxx'
})
);
dav.createAccount({ server: 'http://dav.example.com', xhr: xhr })
.then(function(account) {
...
function DAVCollection(options) { _classCallCheck(this, DAVCollection); Object.assign(this, { data: null, objects: null, account: null, ctag: null, description: null, displayName: null, reports: null, resourcetype: null, syncToken: null, url: null }, options); }
n/a
function DAVObject(options) { _classCallCheck(this, DAVObject); Object.assign(this, { data: null, etag: null, url: null }, options); }
n/a
function Request() { var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; _classCallCheck(this, Request); Object.assign(this, { method: null, requestData: null, transformRequest: null, transformResponse: null, onerror: null }, options); }
n/a
function Sandbox() { _classCallCheck(this, Sandbox); this.requestList = []; }
...
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
- [dav.syncAddressBook(addressBook, options)](#davsyncaddressbookaddressbook-options)
- [dav.syncCarddavAccount(account, options)](#davsynccarddavaccountaccount-options)
- [sandbox](#sandbox)
- [dav.Sandbox()](#davsandbox)
- [transport](#transport)
- [dav.transport.Basic(credentials)](#davtransportbasiccredentials)
- [dav.transport.Basic.send(request, options)](#davtransportbasicsendrequest-options)
- [dav.transport.OAuth2(credentials)](#davtransportoauth2credentials)
- [dav.transport.OAuth2.send(request, options)](#davtransportoauth2sendrequest-options)
- [request](#request)
- [dav.request.addressBookQuery(options)](#davrequestaddressbookqueryoptions)
...
function VCard(options) { _classCallCheck(this, VCard); _get(Object.getPrototypeOf(VCard.prototype), "constructor", this).call(this, options); Object.assign(this, { addressBook: null, addressData: null }, options); }
...
sandbox: options.sandbox
});
case 4:
responses = context$1$0.sent;
return context$1$0.abrupt('return', responses.map(function (res) {
debug('Found vcard with url ' + res.href);
return new _model.VCard({
data: res,
addressBook: addressBook,
url: _url2['default'].resolve(addressBook.account.rootUrl, res.href),
etag: res.props.getetag,
addressData: res.props.addressData
});
}));
...
function createPromise() { return co.call(this, fn.apply(this, arguments)); }
...
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
**Table of Contents** *generated with [DocToc](http://doctoc.herokuapp.com/)*
- [API](#api)
- [accounts](#accounts)
- [dav.createAccount(options)](#davcreateaccountoptions)
- [calendars](#calendars)
- [dav.createCalendarObject(calendar, options)](#davcreatecalendarobjectcalendar-options)
- [dav.updateCalendarObject(calendarObject, options)](#davupdatecalendarobjectcalendarobject-options)
- [dav.deleteCalendarObject(calendarObject, options)](#davdeletecalendarobjectcalendarobject-options)
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
...
function createCalendarObject(calendar, options) { var objectUrl = _url2['default'].resolve(calendar.url, options.filename); return webdav.createObject(objectUrl, options.data, options); }
...
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
**Table of Contents** *generated with [DocToc](http://doctoc.herokuapp.com/)*
- [API](#api)
- [accounts](#accounts)
- [dav.createAccount(options)](#davcreateaccountoptions)
- [calendars](#calendars)
- [dav.createCalendarObject(calendar, options)](#davcreatecalendarobjectcalendar-options
)
- [dav.updateCalendarObject(calendarObject, options)](#davupdatecalendarobjectcalendarobject-options)
- [dav.deleteCalendarObject(calendarObject, options)](#davdeletecalendarobjectcalendarobject-options)
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
...
function createCard(addressBook, options) { var objectUrl = _url2['default'].resolve(addressBook.url, options.filename); return webdav.createObject(objectUrl, options.data, options); }
...
- [calendars](#calendars)
- [dav.createCalendarObject(calendar, options)](#davcreatecalendarobjectcalendar-options)
- [dav.updateCalendarObject(calendarObject, options)](#davupdatecalendarobjectcalendarobject-options)
- [dav.deleteCalendarObject(calendarObject, options)](#davdeletecalendarobjectcalendarobject-options)
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
- [dav.syncAddressBook(addressBook, options)](#davsyncaddressbookaddressbook-options)
- [dav.syncCarddavAccount(account, options)](#davsynccarddavaccountaccount-options)
- [sandbox](#sandbox)
- [dav.Sandbox()](#davsandbox)
- [transport](#transport)
...
function createSandbox() { return new Sandbox(); }
...
```
### sandbox
#### dav.Sandbox()
Create a request sandbox. There is also a deprecated interface
`dav.createSandbox()`. Add requests to the sandbox like so:
```js
var sandbox = new dav.Sandbox();
// sandbox instanceof Sandbox
dav.createAccount({
username: 'Yoshi',
password: 'babybowsersoscaryomg',
...
function debug(topic) { return function (message) { if (debug.enabled) { console.log("[" + topic + "] " + message); } }; }
n/a
function deleteCalendarObject(calendarObject, options) { return webdav.deleteObject(calendarObject.url, calendarObject.etag, options); }
...
- [API](#api)
- [accounts](#accounts)
- [dav.createAccount(options)](#davcreateaccountoptions)
- [calendars](#calendars)
- [dav.createCalendarObject(calendar, options)](#davcreatecalendarobjectcalendar-options)
- [dav.updateCalendarObject(calendarObject, options)](#davupdatecalendarobjectcalendarobject-options)
- [dav.deleteCalendarObject(calendarObject, options)](#davdeletecalendarobjectcalendarobject
-options)
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
- [dav.syncAddressBook(addressBook, options)](#davsyncaddressbookaddressbook-options)
...
function deleteCard(card, options) { return webdav.deleteObject(card.url, card.etag, options); }
...
- [dav.updateCalendarObject(calendarObject, options)](#davupdatecalendarobjectcalendarobject-options)
- [dav.deleteCalendarObject(calendarObject, options)](#davdeletecalendarobjectcalendarobject-options)
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
- [dav.syncAddressBook(addressBook, options)](#davsyncaddressbookaddressbook-options)
- [dav.syncCarddavAccount(account, options)](#davsynccarddavaccountaccount-options)
- [sandbox](#sandbox)
- [dav.Sandbox()](#davsandbox)
- [transport](#transport)
- [dav.transport.Basic(credentials)](#davtransportbasiccredentials)
- [dav.transport.Basic.send(request, options)](#davtransportbasicsendrequest-options)
...
function createPromise() { return co.call(this, fn.apply(this, arguments)); }
n/a
function createPromise() { return co.call(this, fn.apply(this, arguments)); }
n/a
function createPromise() { return co.call(this, fn.apply(this, arguments)); }
n/a
function createPromise() { return co.call(this, fn.apply(this, arguments)); }
n/a
function syncAddressBook(addressBook, options) { options.basicSync = basicSync; options.webdavSync = webdavSync; return webdav.syncCollection(addressBook, options); }
...
- [dav.deleteCalendarObject(calendarObject, options)](#davdeletecalendarobjectcalendarobject-options)
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
- [dav.syncAddressBook(addressBook, options)](#davsyncaddressbookaddressbook-options
)
- [dav.syncCarddavAccount(account, options)](#davsynccarddavaccountaccount-options)
- [sandbox](#sandbox)
- [dav.Sandbox()](#davsandbox)
- [transport](#transport)
- [dav.transport.Basic(credentials)](#davtransportbasiccredentials)
- [dav.transport.Basic.send(request, options)](#davtransportbasicsendrequest-options)
- [dav.transport.OAuth2(credentials)](#davtransportoauth2credentials)
...
function createPromise() { return co.call(this, fn.apply(this, arguments)); }
...
- [accounts](#accounts)
- [dav.createAccount(options)](#davcreateaccountoptions)
- [calendars](#calendars)
- [dav.createCalendarObject(calendar, options)](#davcreatecalendarobjectcalendar-options)
- [dav.updateCalendarObject(calendarObject, options)](#davupdatecalendarobjectcalendarobject-options)
- [dav.deleteCalendarObject(calendarObject, options)](#davdeletecalendarobjectcalendarobject-options)
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
- [dav.syncAddressBook(addressBook, options)](#davsyncaddressbookaddressbook-options)
- [dav.syncCarddavAccount(account, options)](#davsynccarddavaccountaccount-options)
- [sandbox](#sandbox)
...
function syncCalendar(calendar, options) { options.basicSync = basicSync; options.webdavSync = webdavSync; return webdav.syncCollection(calendar, options); }
...
- [API](#api)
- [accounts](#accounts)
- [dav.createAccount(options)](#davcreateaccountoptions)
- [calendars](#calendars)
- [dav.createCalendarObject(calendar, options)](#davcreatecalendarobjectcalendar-options)
- [dav.updateCalendarObject(calendarObject, options)](#davupdatecalendarobjectcalendarobject-options)
- [dav.deleteCalendarObject(calendarObject, options)](#davdeletecalendarobjectcalendarobject-options)
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
- [dav.syncAddressBook(addressBook, options)](#davsyncaddressbookaddressbook-options)
- [dav.syncCarddavAccount(account, options)](#davsynccarddavaccountaccount-options)
...
function createPromise() { return co.call(this, fn.apply(this, arguments)); }
...
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
- [dav.syncAddressBook(addressBook, options)](#davsyncaddressbookaddressbook-options)
- [dav.syncCarddavAccount(account, options)](#davsynccarddavaccountaccount-options)
- [sandbox](#sandbox)
- [dav.Sandbox()](#davsandbox)
- [transport](#transport)
- [dav.transport.Basic(credentials)](#davtransportbasiccredentials)
- [dav.transport.Basic.send(request, options)](#davtransportbasicsendrequest-options)
- [dav.transport.OAuth2(credentials)](#davtransportoauth2credentials)
- [dav.transport.OAuth2.send(request, options)](#davtransportoauth2sendrequest-options)
...
function updateCalendarObject(calendarObject, options) { return webdav.updateObject(calendarObject.url, calendarObject.calendarData, calendarObject.etag, options); }
...
**Table of Contents** *generated with [DocToc](http://doctoc.herokuapp.com/)*
- [API](#api)
- [accounts](#accounts)
- [dav.createAccount(options)](#davcreateaccountoptions)
- [calendars](#calendars)
- [dav.createCalendarObject(calendar, options)](#davcreatecalendarobjectcalendar-options)
- [dav.updateCalendarObject(calendarObject, options)](#davupdatecalendarobjectcalendarobject
-options)
- [dav.deleteCalendarObject(calendarObject, options)](#davdeletecalendarobjectcalendarobject-options)
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
...
function updateCard(card, options) { return webdav.updateObject(card.url, card.addressData, card.etag, options); }
...
- [dav.createCalendarObject(calendar, options)](#davcreatecalendarobjectcalendar-options)
- [dav.updateCalendarObject(calendarObject, options)](#davupdatecalendarobjectcalendarobject-options)
- [dav.deleteCalendarObject(calendarObject, options)](#davdeletecalendarobjectcalendarobject-options)
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
- [dav.syncAddressBook(addressBook, options)](#davsyncaddressbookaddressbook-options)
- [dav.syncCarddavAccount(account, options)](#davsynccarddavaccountaccount-options)
- [sandbox](#sandbox)
- [dav.Sandbox()](#davsandbox)
- [transport](#transport)
- [dav.transport.Basic(credentials)](#davtransportbasiccredentials)
...
function createPromise() { return co.call(this, fn.apply(this, arguments)); }
n/a
function callee$0$0(account, options) { var req, responses, addressBooks; return regeneratorRuntime.wrap(function callee$0$0$(context$1$0) { while (1) switch (context$1$0.prev = context$1$0.next) { case 0: debug('Fetch address books from home url ' + account.homeUrl); req = request.propfind({ props: [{ name: 'displayname', namespace: ns.DAV }, { name: 'getctag', namespace: ns.CALENDAR_SERVER }, { name: 'resourcetype ', namespace: ns.DAV }, { name: 'sync-token', namespace: ns.DAV }], depth: 1 }); context$1$0.next = 4; return options.xhr.send(req, account.homeUrl, { sandbox: options.sandbox }); case 4: responses = context$1$0.sent; addressBooks = responses.filter(function (res) { return typeof res.props.displayname === 'string'; }).map(function (res) { debug('Found address book named ' + res.props.displayname + ',\n props: ' + JSON.stringify(res.props)); return new _model.AddressBook({ data: res, account: account, url: _url2['default'].resolve(account.rootUrl, res.href), ctag: res.props.getctag, displayName: res.props.displayname, resourcetype: res.props.resourcetype, syncToken: res.props.syncToken }); }); context$1$0.next = 8; return addressBooks.map(_co2['default'].wrap(regeneratorRuntime.mark(function callee$1$0(addressBook) { return regeneratorRuntime.wrap(function callee$1$0$(context$2$0) { while (1) switch (context$2$0.prev = context$2$0.next) { case 0: context$2$0.next = 2; return webdav.supportedReportSet(addressBook, options); case 2: addressBook.reports = context$2$0.sent; case 3: case 'end': return context$2$0.stop(); } }, callee$1$0, this); }))); case 8: return context$1$0.abrupt('return', addressBooks); case 9: case 'end': return context$1$0.stop(); } }, callee$0$0, this); }
n/a
function createPromise() { return co.call(this, fn.apply(this, arguments)); }
n/a
function callee$0$0(calendar, options) { var filters, req, responses; return regeneratorRuntime.wrap(function callee$0$0$(context$1$0) { while (1) switch (context$1$0.prev = context$1$0.next) { case 0: debug('Doing REPORT on calendar ' + calendar.url + ' which belongs to\n ' + calendar.account.credentials.username ); filters = options.filters || [{ type: 'comp-filter', attrs: { name: 'VCALENDAR' }, children: [{ type: 'comp-filter', attrs: { name: 'VEVENT' } }] }]; req = request.calendarQuery({ depth: 1, props: [{ name: 'getetag', namespace: ns.DAV }, { name: 'calendar-data', namespace: ns.CALDAV }], filters: filters }); context$1$0.next = 5; return options.xhr.send(req, calendar.url, { sandbox: options.sandbox }); case 5: responses = context$1$0.sent; return context$1$0.abrupt('return', responses.map(function (res) { debug('Found calendar object with url ' + res.href); return new _model.CalendarObject({ data: res, calendar: calendar, url: _url2['default'].resolve(calendar.account.rootUrl, res.href), etag: res.props.getetag, calendarData: res.props.calendarData }); })); case 7: case 'end': return context$1$0.stop(); } }, callee$0$0, this); }
n/a
function createPromise() { return co.call(this, fn.apply(this, arguments)); }
n/a
function callee$0$0(account, options) { var req, responses, cals; return regeneratorRuntime.wrap(function callee$0$0$(context$1$0) { while (1) switch (context$1$0.prev = context$1$0.next) { case 0: debug('Fetch calendars from home url ' + account.homeUrl); req = request.propfind({ props: [{ name: 'calendar-description', namespace: ns.CALDAV }, { name: 'calendar-timezone', namespace: ns.CALDAV }, { name: 'displayname', namespace: ns.DAV }, { name: 'getctag', namespace: ns.CALENDAR_SERVER }, { name: 'resourcetype', namespace: ns.DAV }, { name: 'supported-calendar-component-set', namespace: ns.CALDAV }, { name: 'sync-token', namespace: ns.DAV }], depth: 1 }); context$1$0.next = 4; return options.xhr.send(req, account.homeUrl, { sandbox: options.sandbox }); case 4: responses = context$1$0.sent; debug('Found ' + responses.length + ' calendars.'); cals = responses.filter(function (res) { // We only want the calendar if it contains iCalendar objects. var components = res.props.supportedCalendarComponentSet || []; return components.reduce(function (hasObjs, component) { return hasObjs || ICAL_OBJS.has(component); }, false); }).map(function (res) { debug('Found calendar ' + res.props.displayname + ',\n props: ' + JSON.stringify(res.props)); return new _model.Calendar({ data: res, account: account, description: res.props.calendarDescription, timezone: res.props.calendarTimezone, url: _url2['default'].resolve(account.rootUrl, res.href), ctag: res.props.getctag, displayName: res.props.displayname, components: res.props.supportedCalendarComponentSet, resourcetype: res.props.resourcetype, syncToken: res.props.syncToken }); }); context$1$0.next = 9; return cals.map(_co2['default'].wrap(regeneratorRuntime.mark(function callee$1$0(cal) { return regeneratorRuntime.wrap(function callee$1$0$(context$2$0) { while (1) switch (context$2$0.prev = context$2$0.next) { case 0: context$2$0.next = 2; return webdav.supportedReportSet(cal, options); case 2: cal.reports = context$2$0.sent; case 3: case 'end': return context$2$0.stop(); } }, callee$1$0, this); }))); case 9: return context$1$0.abrupt('return', cals); case 10: case 'end': return context$1$0.stop(); } }, callee$0$0, this); }
n/a
function createPromise() { return co.call(this, fn.apply(this, arguments)); }
n/a
function callee$0$0(addressBook, options) { var req, responses; return regeneratorRuntime.wrap(function callee$0$0$(context$1$0) { while (1) switch (context$1$0.prev = context$1$0.next) { case 0: debug('Doing REPORT on address book ' + addressBook.url + ' which belongs to\n ' + addressBook.account.credentials .username); req = request.addressBookQuery({ depth: 1, props: [{ name: 'getetag', namespace: ns.DAV }, { name: 'address-data', namespace: ns.CARDDAV }] }); context$1$0.next = 4; return options.xhr.send(req, addressBook.url, { sandbox: options.sandbox }); case 4: responses = context$1$0.sent; return context$1$0.abrupt('return', responses.map(function (res) { debug('Found vcard with url ' + res.href); return new _model.VCard({ data: res, addressBook: addressBook, url: _url2['default'].resolve(addressBook.account.rootUrl, res.href), etag: res.props.getetag, addressData: res.props.addressData }); })); case 6: case 'end': return context$1$0.stop(); } }, callee$0$0, this); }
n/a
function Request() { var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; _classCallCheck(this, Request); Object.assign(this, { method: null, requestData: null, transformRequest: null, transformResponse: null, onerror: null }, options); }
n/a
function addressBookQuery(options) { return collectionQuery(template.addressBookQuery({ props: options.props || [] }), { depth: options.depth }); }
...
- [dav.Sandbox()](#davsandbox)
- [transport](#transport)
- [dav.transport.Basic(credentials)](#davtransportbasiccredentials)
- [dav.transport.Basic.send(request, options)](#davtransportbasicsendrequest-options)
- [dav.transport.OAuth2(credentials)](#davtransportoauth2credentials)
- [dav.transport.OAuth2.send(request, options)](#davtransportoauth2sendrequest-options)
- [request](#request)
- [dav.request.addressBookQuery(options)](#davrequestaddressbookqueryoptions)
- [dav.request.basic(options)](#davrequestbasicoptions)
- [dav.request.calendarQuery(options)](#davrequestcalendarqueryoptions)
- [dav.request.propfind(options)](#davrequestpropfindoptions)
- [dav.request.syncCollection(options)](#davrequestsynccollectionoptions)
- [Client](#client)
- [dav.Client(xhr, options)](#davclientxhr-options)
- [dav.Client.send(req, options)](#davclientsendreq-options)
...
function basic(options) { function transformRequest(xhr) { setRequestHeaders(xhr, options); } return new Request({ method: options.method, requestData: options.data, transformRequest: transformRequest }); }
...
- [transport](#transport)
- [dav.transport.Basic(credentials)](#davtransportbasiccredentials)
- [dav.transport.Basic.send(request, options)](#davtransportbasicsendrequest-options)
- [dav.transport.OAuth2(credentials)](#davtransportoauth2credentials)
- [dav.transport.OAuth2.send(request, options)](#davtransportoauth2sendrequest-options)
- [request](#request)
- [dav.request.addressBookQuery(options)](#davrequestaddressbookqueryoptions)
- [dav.request.basic(options)](#davrequestbasicoptions)
- [dav.request.calendarQuery(options)](#davrequestcalendarqueryoptions)
- [dav.request.propfind(options)](#davrequestpropfindoptions)
- [dav.request.syncCollection(options)](#davrequestsynccollectionoptions)
- [Client](#client)
- [dav.Client(xhr, options)](#davclientxhr-options)
- [dav.Client.send(req, options)](#davclientsendreq-options)
- [etc](#etc)
...
function calendarQuery(options) { return collectionQuery(template.calendarQuery({ props: options.props || [], filters: options.filters || [], timezone: options.timezone }), { depth: options.depth }); }
...
- [dav.transport.Basic(credentials)](#davtransportbasiccredentials)
- [dav.transport.Basic.send(request, options)](#davtransportbasicsendrequest-options)
- [dav.transport.OAuth2(credentials)](#davtransportoauth2credentials)
- [dav.transport.OAuth2.send(request, options)](#davtransportoauth2sendrequest-options)
- [request](#request)
- [dav.request.addressBookQuery(options)](#davrequestaddressbookqueryoptions)
- [dav.request.basic(options)](#davrequestbasicoptions)
- [dav.request.calendarQuery(options)](#davrequestcalendarqueryoptions)
- [dav.request.propfind(options)](#davrequestpropfindoptions)
- [dav.request.syncCollection(options)](#davrequestsynccollectionoptions)
- [Client](#client)
- [dav.Client(xhr, options)](#davclientxhr-options)
- [dav.Client.send(req, options)](#davclientsendreq-options)
- [etc](#etc)
- [dav.ns](#davns)
...
function collectionQuery(requestData, options) { function transformRequest(xhr) { setRequestHeaders(xhr, options); } function transformResponse(xhr) { return (0, _parser.multistatus)(xhr.responseText).response.map(function (res) { return { href: res.href, props: getProps(res.propstat) }; }); } return new Request({ method: 'REPORT', requestData: requestData, transformRequest: transformRequest, transformResponse: transformResponse }); }
n/a
function getProps(propstats) { return mergeProps(propstats.map(getProp).filter(function (prop) { return prop && typeof prop === 'object'; })); }
n/a
function mergeProps(props) { return props.reduce(function (a, b) { return Object.assign(a, b); }, {}); }
n/a
function propfind(options) { var requestData = template.propfind({ props: options.props }); function transformRequest(xhr) { setRequestHeaders(xhr, options); } function transformResponse(xhr) { var responses = (0, _parser.multistatus)(xhr.responseText).response.map(function (res) { return { href: res.href, props: getProps(res.propstat) }; }); if (!options.mergeResponses) { return responses; } // Merge the props. var merged = mergeProps(responses.map(function (res) { return res.props; })); var hrefs = responses.map(function (res) { return res.href; }); return { props: merged, hrefs: hrefs }; } return new Request({ method: 'PROPFIND', requestData: requestData, transformRequest: transformRequest, transformResponse: transformResponse }); }
...
- [dav.transport.Basic.send(request, options)](#davtransportbasicsendrequest-options)
- [dav.transport.OAuth2(credentials)](#davtransportoauth2credentials)
- [dav.transport.OAuth2.send(request, options)](#davtransportoauth2sendrequest-options)
- [request](#request)
- [dav.request.addressBookQuery(options)](#davrequestaddressbookqueryoptions)
- [dav.request.basic(options)](#davrequestbasicoptions)
- [dav.request.calendarQuery(options)](#davrequestcalendarqueryoptions)
- [dav.request.propfind(options)](#davrequestpropfindoptions)
- [dav.request.syncCollection(options)](#davrequestsynccollectionoptions)
- [Client](#client)
- [dav.Client(xhr, options)](#davclientxhr-options)
- [dav.Client.send(req, options)](#davclientsendreq-options)
- [etc](#etc)
- [dav.ns](#davns)
- [Example Usage](#example-usage)
...
function setRequestHeaders(request, options) { request.setRequestHeader('Content-Type', 'application/xml;charset=utf-8'); if ('depth' in options) { request.setRequestHeader('Depth', options.depth); } if ('etag' in options) { request.setRequestHeader('If-Match', options.etag); } }
n/a
function syncCollection(options) { var requestData = template.syncCollection({ props: options.props, syncLevel: options.syncLevel, syncToken: options.syncToken }); function transformRequest(xhr) { setRequestHeaders(xhr, options); } function transformResponse(xhr) { var object = (0, _parser.multistatus)(xhr.responseText); var responses = object.response.map(function (res) { return { href: res.href, props: getProps(res.propstat) }; }); return { responses: responses, syncToken: object.syncToken }; } return new Request({ method: 'REPORT', requestData: requestData, transformRequest: transformRequest, transformResponse: transformResponse }); }
...
- [dav.transport.OAuth2(credentials)](#davtransportoauth2credentials)
- [dav.transport.OAuth2.send(request, options)](#davtransportoauth2sendrequest-options)
- [request](#request)
- [dav.request.addressBookQuery(options)](#davrequestaddressbookqueryoptions)
- [dav.request.basic(options)](#davrequestbasicoptions)
- [dav.request.calendarQuery(options)](#davrequestcalendarqueryoptions)
- [dav.request.propfind(options)](#davrequestpropfindoptions)
- [dav.request.syncCollection(options)](#davrequestsynccollectionoptions)
- [Client](#client)
- [dav.Client(xhr, options)](#davclientxhr-options)
- [dav.Client.send(req, options)](#davclientsendreq-options)
- [etc](#etc)
- [dav.ns](#davns)
- [Example Usage](#example-usage)
- [Using the lower-level webdav request api](#using-the-lower-level-webdav-request-api)
...
function createPromise() { return co.call(this, fn.apply(this, arguments)); }
...
- [accounts](#accounts)
- [dav.createAccount(options)](#davcreateaccountoptions)
- [calendars](#calendars)
- [dav.createCalendarObject(calendar, options)](#davcreatecalendarobjectcalendar-options)
- [dav.updateCalendarObject(calendarObject, options)](#davupdatecalendarobjectcalendarobject-options)
- [dav.deleteCalendarObject(calendarObject, options)](#davdeletecalendarobjectcalendarobject-options)
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
- [dav.syncAddressBook(addressBook, options)](#davsyncaddressbookaddressbook-options)
- [dav.syncCarddavAccount(account, options)](#davsynccarddavaccountaccount-options)
- [sandbox](#sandbox)
...
function callee$0$0(account) { var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; var cals; return regeneratorRuntime.wrap(function callee$0$0$(context$1$0) { while (1) switch (context$1$0.prev = context$1$0.next) { case 0: options.loadObjects = false; if (!account.calendars) account.calendars = []; context$1$0.next = 4; return listCalendars(account, options); case 4: cals = context$1$0.sent; cals.filter(function (cal) { // Filter the calendars not previously seen. return account.calendars.every(function (prev) { return !(0, _fuzzy_url_equals2['default'])(prev.url, cal.url); }); }).forEach(function (cal) { // Add them to the account's calendar list. account.calendars.push(cal); }); options.loadObjects = true; context$1$0.next = 9; return account.calendars.map(_co2['default'].wrap(regeneratorRuntime.mark(function callee$1$0(cal, index) { return regeneratorRuntime.wrap(function callee$1$0$(context$2$0) { while (1) switch (context$2$0.prev = context$2$0.next) { case 0: context$2$0.prev = 0; context$2$0.next = 3; return syncCalendar(cal, options); case 3: context$2$0.next = 9; break; case 5: context$2$0.prev = 5; context$2$0.t0 = context$2$0['catch'](0); debug('Sync calendar ' + cal.displayName + ' failed with ' + context$2$0.t0); account.calendars.splice(index, 1); case 9: case 'end': return context$2$0.stop(); } }, callee$1$0, this, [[0, 5]]); }))); case 9: return context$1$0.abrupt('return', account); case 10: case 'end': return context$1$0.stop(); } }, callee$0$0, this); }
n/a
function createPromise() { return co.call(this, fn.apply(this, arguments)); }
...
- [dav.syncCalendar(calendar, options)](#davsynccalendarcalendar-options)
- [dav.syncCaldavAccount(account, options)](#davsynccaldavaccountaccount-options)
- [contacts](#contacts)
- [dav.createCard(addressBook, options)](#davcreatecardaddressbook-options)
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
- [dav.syncAddressBook(addressBook, options)](#davsyncaddressbookaddressbook-options)
- [dav.syncCarddavAccount(account, options)](#davsynccarddavaccountaccount-options)
- [sandbox](#sandbox)
- [dav.Sandbox()](#davsandbox)
- [transport](#transport)
- [dav.transport.Basic(credentials)](#davtransportbasiccredentials)
- [dav.transport.Basic.send(request, options)](#davtransportbasicsendrequest-options)
- [dav.transport.OAuth2(credentials)](#davtransportoauth2credentials)
- [dav.transport.OAuth2.send(request, options)](#davtransportoauth2sendrequest-options)
...
function callee$0$0(account) { var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; var addressBooks; return regeneratorRuntime.wrap(function callee$0$0$(context$1$0) { while (1) switch (context$1$0.prev = context$1$0.next) { case 0: options.loadObjects = false; if (!account.addressBooks) { account.addressBooks = []; } context$1$0.next = 4; return listAddressBooks(account, options); case 4: addressBooks = context$1$0.sent; addressBooks.filter(function (addressBook) { // Filter the address books not previously seen. return account.addressBooks.every(function (prev) { return !(0, _fuzzy_url_equals2['default'])(prev.url, addressBook.url); }); }).forEach(function (addressBook) { return account.addressBooks.push(addressBook); }); options.loadObjects = true; context$1$0.next = 9; return account.addressBooks.map(_co2['default'].wrap(regeneratorRuntime.mark(function callee$1$0(addressBook, index) { return regeneratorRuntime.wrap(function callee$1$0$(context$2$0) { while (1) switch (context$2$0.prev = context$2$0.next) { case 0: context$2$0.prev = 0; context$2$0.next = 3; return syncAddressBook(addressBook, options); case 3: context$2$0.next = 9; break; case 5: context$2$0.prev = 5; context$2$0.t0 = context$2$0['catch'](0); debug('Syncing ' + addressBook.displayName + ' failed with ' + context$2$0.t0); account.addressBooks.splice(index, 1); case 9: case 'end': return context$2$0.stop(); } }, callee$1$0, this, [[0, 5]]); }))); case 9: return context$1$0.abrupt('return', account); case 10: case 'end': return context$1$0.stop(); } }, callee$0$0, this); }
n/a
function Basic(credentials) { _classCallCheck(this, Basic); _get(Object.getPrototypeOf(Basic.prototype), 'constructor', this).call(this, credentials); }
...
- [dav.updateCard(card, options)](#davupdatecardcard-options)
- [dav.deleteCard(card, options)](#davdeletecardcard-options)
- [dav.syncAddressBook(addressBook, options)](#davsyncaddressbookaddressbook-options)
- [dav.syncCarddavAccount(account, options)](#davsynccarddavaccountaccount-options)
- [sandbox](#sandbox)
- [dav.Sandbox()](#davsandbox)
- [transport](#transport)
- [dav.transport.Basic(credentials)](#davtransportbasiccredentials)
- [dav.transport.Basic.send(request, options)](#davtransportbasicsendrequest-options)
- [dav.transport.OAuth2(credentials)](#davtransportoauth2credentials)
- [dav.transport.OAuth2.send(request, options)](#davtransportoauth2sendrequest-options)
- [request](#request)
- [dav.request.addressBookQuery(options)](#davrequestaddressbookqueryoptions)
- [dav.request.basic(options)](#davrequestbasicoptions)
- [dav.request.calendarQuery(options)](#davrequestcalendarqueryoptions)
...
function OAuth2(credentials) { _classCallCheck(this, OAuth2); _get(Object.getPrototypeOf(OAuth2.prototype), 'constructor', this).call(this, credentials); }
...
- [dav.syncAddressBook(addressBook, options)](#davsyncaddressbookaddressbook-options)
- [dav.syncCarddavAccount(account, options)](#davsynccarddavaccountaccount-options)
- [sandbox](#sandbox)
- [dav.Sandbox()](#davsandbox)
- [transport](#transport)
- [dav.transport.Basic(credentials)](#davtransportbasiccredentials)
- [dav.transport.Basic.send(request, options)](#davtransportbasicsendrequest-options)
- [dav.transport.OAuth2(credentials)](#davtransportoauth2credentials)
- [dav.transport.OAuth2.send(request, options)](#davtransportoauth2sendrequest-options)
- [request](#request)
- [dav.request.addressBookQuery(options)](#davrequestaddressbookqueryoptions)
- [dav.request.basic(options)](#davrequestbasicoptions)
- [dav.request.calendarQuery(options)](#davrequestcalendarqueryoptions)
- [dav.request.propfind(options)](#davrequestpropfindoptions)
- [dav.request.syncCollection(options)](#davrequestsynccollectionoptions)
...
function Transport(credentials) { _classCallCheck(this, Transport); this.credentials = credentials || null; }
n/a