Skip to content

Commit

Permalink
Merge pull request #228 from pierreliefauche/calendar-user-addresses
Browse files Browse the repository at this point in the history
Fetch calendar user addresses
  • Loading branch information
natelindev authored Dec 9, 2024
2 parents 44b68c8 + a59bba5 commit 91da0ab
Show file tree
Hide file tree
Showing 14 changed files with 296 additions and 9 deletions.
33 changes: 33 additions & 0 deletions dist/tsdav.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -759,6 +759,29 @@ var addressBook = /*#__PURE__*/Object.freeze({

/* eslint-disable no-underscore-dangle */
const debug$2 = getLogger('tsdav:calendar');
const fetchCalendarUserAddresses = async (params) => {
var _a, _b, _c;
const { account, headers, headersToExclude, fetchOptions = {} } = params;
const requiredFields = ['principalUrl', 'rootUrl'];
if (!hasFields(account, requiredFields)) {
throw new Error(`account must have ${findMissingFieldNames(account, requiredFields)} before fetchUserAddresses`);
}
debug$2(`Fetch user addresses from ${account.principalUrl}`);
const responses = await propfind({
url: account.principalUrl,
props: { [`${exports.DAVNamespaceShort.CALDAV}:calendar-user-address-set`]: {} },
depth: '0',
headers: excludeHeaders(headers, headersToExclude),
fetchOptions,
});
const matched = responses.find((r) => urlContains(account.principalUrl, r.href));
if (!matched || !matched.ok) {
throw new Error('cannot find calendarUserAddresses');
}
const addresses = ((_c = (_b = (_a = matched === null || matched === void 0 ? void 0 : matched.props) === null || _a === void 0 ? void 0 : _a.calendarUserAddressSet) === null || _b === void 0 ? void 0 : _b.href) === null || _c === void 0 ? void 0 : _c.filter(Boolean)) || [];
debug$2(`Fetched calendar user addresses ${addresses}`);
return addresses;
};
const calendarQuery = async (params) => {
const { url, props, filters, timezone, depth, headers, headersToExclude, fetchOptions = {} } = params;
return collectionQuery({
Expand Down Expand Up @@ -1174,6 +1197,7 @@ var calendar = /*#__PURE__*/Object.freeze({
createCalendarObject: createCalendarObject,
deleteCalendarObject: deleteCalendarObject,
fetchCalendarObjects: fetchCalendarObjects,
fetchCalendarUserAddresses: fetchCalendarUserAddresses,
fetchCalendars: fetchCalendars,
freeBusyQuery: freeBusyQuery,
makeCalendar: makeCalendar,
Expand Down Expand Up @@ -1534,6 +1558,10 @@ const createDAVClient = async (params) => {
headers: authHeaders,
account: defaultAccount,
});
const fetchCalendarUserAddresses$1 = defaultParam(fetchCalendarUserAddresses, {
headers: authHeaders,
account: defaultAccount,
});
const fetchCalendarObjects$1 = defaultParam(fetchCalendarObjects, {
headers: authHeaders,
});
Expand Down Expand Up @@ -1579,6 +1607,7 @@ const createDAVClient = async (params) => {
isCollectionDirty: isCollectionDirty$1,
smartCollectionSync: smartCollectionSync$1,
fetchCalendars: fetchCalendars$1,
fetchCalendarUserAddresses: fetchCalendarUserAddresses$1,
fetchCalendarObjects: fetchCalendarObjects$1,
createCalendarObject: createCalendarObject$1,
updateCalendarObject: updateCalendarObject$1,
Expand Down Expand Up @@ -1717,6 +1746,9 @@ class DAVClient {
async fetchCalendars(...params) {
return defaultParam(fetchCalendars, { headers: this.authHeaders, account: this.account, fetchOptions: this.fetchOptions })(params === null || params === void 0 ? void 0 : params[0]);
}
async fetchCalendarUserAddresses(...params) {
return defaultParam(fetchCalendarUserAddresses, { headers: this.authHeaders, account: this.account, fetchOptions: this.fetchOptions })(params === null || params === void 0 ? void 0 : params[0]);
}
async fetchCalendarObjects(...params) {
return defaultParam(fetchCalendarObjects, { headers: this.authHeaders, fetchOptions: this.fetchOptions })(params[0]);
}
Expand Down Expand Up @@ -1798,6 +1830,7 @@ exports.deleteObject = deleteObject;
exports.deleteVCard = deleteVCard;
exports.fetchAddressBooks = fetchAddressBooks;
exports.fetchCalendarObjects = fetchCalendarObjects;
exports.fetchCalendarUserAddresses = fetchCalendarUserAddresses;
exports.fetchCalendars = fetchCalendars;
exports.fetchOauthTokens = fetchOauthTokens;
exports.fetchVCards = fetchVCards;
Expand Down
33 changes: 33 additions & 0 deletions dist/tsdav.cjs.js
Original file line number Diff line number Diff line change
Expand Up @@ -759,6 +759,29 @@ var addressBook = /*#__PURE__*/Object.freeze({

/* eslint-disable no-underscore-dangle */
const debug$2 = getLogger('tsdav:calendar');
const fetchCalendarUserAddresses = async (params) => {
var _a, _b, _c;
const { account, headers, headersToExclude, fetchOptions = {} } = params;
const requiredFields = ['principalUrl', 'rootUrl'];
if (!hasFields(account, requiredFields)) {
throw new Error(`account must have ${findMissingFieldNames(account, requiredFields)} before fetchUserAddresses`);
}
debug$2(`Fetch user addresses from ${account.principalUrl}`);
const responses = await propfind({
url: account.principalUrl,
props: { [`${exports.DAVNamespaceShort.CALDAV}:calendar-user-address-set`]: {} },
depth: '0',
headers: excludeHeaders(headers, headersToExclude),
fetchOptions,
});
const matched = responses.find((r) => urlContains(account.principalUrl, r.href));
if (!matched || !matched.ok) {
throw new Error('cannot find calendarUserAddresses');
}
const addresses = ((_c = (_b = (_a = matched === null || matched === void 0 ? void 0 : matched.props) === null || _a === void 0 ? void 0 : _a.calendarUserAddressSet) === null || _b === void 0 ? void 0 : _b.href) === null || _c === void 0 ? void 0 : _c.filter(Boolean)) || [];
debug$2(`Fetched calendar user addresses ${addresses}`);
return addresses;
};
const calendarQuery = async (params) => {
const { url, props, filters, timezone, depth, headers, headersToExclude, fetchOptions = {} } = params;
return collectionQuery({
Expand Down Expand Up @@ -1174,6 +1197,7 @@ var calendar = /*#__PURE__*/Object.freeze({
createCalendarObject: createCalendarObject,
deleteCalendarObject: deleteCalendarObject,
fetchCalendarObjects: fetchCalendarObjects,
fetchCalendarUserAddresses: fetchCalendarUserAddresses,
fetchCalendars: fetchCalendars,
freeBusyQuery: freeBusyQuery,
makeCalendar: makeCalendar,
Expand Down Expand Up @@ -1534,6 +1558,10 @@ const createDAVClient = async (params) => {
headers: authHeaders,
account: defaultAccount,
});
const fetchCalendarUserAddresses$1 = defaultParam(fetchCalendarUserAddresses, {
headers: authHeaders,
account: defaultAccount,
});
const fetchCalendarObjects$1 = defaultParam(fetchCalendarObjects, {
headers: authHeaders,
});
Expand Down Expand Up @@ -1579,6 +1607,7 @@ const createDAVClient = async (params) => {
isCollectionDirty: isCollectionDirty$1,
smartCollectionSync: smartCollectionSync$1,
fetchCalendars: fetchCalendars$1,
fetchCalendarUserAddresses: fetchCalendarUserAddresses$1,
fetchCalendarObjects: fetchCalendarObjects$1,
createCalendarObject: createCalendarObject$1,
updateCalendarObject: updateCalendarObject$1,
Expand Down Expand Up @@ -1717,6 +1746,9 @@ class DAVClient {
async fetchCalendars(...params) {
return defaultParam(fetchCalendars, { headers: this.authHeaders, account: this.account, fetchOptions: this.fetchOptions })(params === null || params === void 0 ? void 0 : params[0]);
}
async fetchCalendarUserAddresses(...params) {
return defaultParam(fetchCalendarUserAddresses, { headers: this.authHeaders, account: this.account, fetchOptions: this.fetchOptions })(params === null || params === void 0 ? void 0 : params[0]);
}
async fetchCalendarObjects(...params) {
return defaultParam(fetchCalendarObjects, { headers: this.authHeaders, fetchOptions: this.fetchOptions })(params[0]);
}
Expand Down Expand Up @@ -1798,6 +1830,7 @@ exports.deleteObject = deleteObject;
exports.deleteVCard = deleteVCard;
exports.fetchAddressBooks = fetchAddressBooks;
exports.fetchCalendarObjects = fetchCalendarObjects;
exports.fetchCalendarUserAddresses = fetchCalendarUserAddresses;
exports.fetchCalendars = fetchCalendars;
exports.fetchOauthTokens = fetchOauthTokens;
exports.fetchVCards = fetchVCards;
Expand Down
27 changes: 26 additions & 1 deletion dist/tsdav.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,12 @@ declare const deleteVCard: (params: {
fetchOptions?: RequestInit;
}) => Promise<Response>;

declare const fetchCalendarUserAddresses: (params: {
account: DAVAccount;
headers?: Record<string, string>;
headersToExclude?: string[];
fetchOptions?: RequestInit;
}) => Promise<string[]>;
declare const calendarQuery: (params: {
url: string;
props: ElementCompact;
Expand Down Expand Up @@ -544,6 +550,12 @@ declare const createDAVClient: (params: {
headersToExclude?: string[];
fetchOptions?: RequestInit;
} | undefined) => Promise<DAVCalendar[]>;
fetchCalendarUserAddresses: (params: {
account: DAVAccount;
headers?: Record<string, string>;
headersToExclude?: string[];
fetchOptions?: RequestInit;
}) => Promise<string[]>;
fetchCalendarObjects: (params: {
calendar: DAVCalendar;
objectUrls?: string[];
Expand Down Expand Up @@ -696,6 +708,7 @@ declare class DAVClient {
makeCalendar(...params: Parameters<typeof makeCalendar>): Promise<DAVResponse[]>;
calendarMultiGet(...params: Parameters<typeof calendarMultiGet>): Promise<DAVResponse[]>;
fetchCalendars(...params: Parameters<typeof fetchCalendars>): Promise<DAVCalendar[]>;
fetchCalendarUserAddresses(...params: Parameters<typeof fetchCalendarUserAddresses>): Promise<string[]>;
fetchCalendarObjects(...params: Parameters<typeof fetchCalendarObjects>): Promise<DAVCalendarObject[]>;
createCalendarObject(...params: Parameters<typeof createCalendarObject>): Promise<Response>;
updateCalendarObject(...params: Parameters<typeof updateCalendarObject>): Promise<Response>;
Expand Down Expand Up @@ -767,6 +780,12 @@ declare const _default: {
authorization?: string;
};
}>;
fetchCalendarUserAddresses: (params: {
account: DAVAccount;
headers?: Record<string, string>;
headersToExclude?: string[];
fetchOptions?: RequestInit;
}) => Promise<string[]>;
calendarQuery: (params: {
url: string;
props: xml_js.ElementCompact;
Expand Down Expand Up @@ -1147,6 +1166,12 @@ declare const _default: {
headersToExclude?: string[];
fetchOptions?: RequestInit;
} | undefined) => Promise<DAVCalendar[]>;
fetchCalendarUserAddresses: (params: {
account: DAVAccount;
headers?: Record<string, string>;
headersToExclude?: string[];
fetchOptions?: RequestInit;
}) => Promise<string[]>;
fetchCalendarObjects: (params: {
calendar: DAVCalendar;
objectUrls?: string[];
Expand Down Expand Up @@ -1241,4 +1266,4 @@ declare const _default: {
};
};

export { type DAVAccount, type DAVAddressBook, DAVAttributeMap, type DAVCalendar, type DAVCalendarObject, DAVClient, type DAVCollection, type DAVCredentials, type DAVDepth, type DAVMethods, DAVNamespace, DAVNamespaceShort, type DAVObject, type DAVRequest, type DAVResponse, type DAVTokens, type DAVVCard, addressBookQuery, calendarMultiGet, calendarQuery, cleanupFalsy, collectionQuery, createAccount, createCalendarObject, createDAVClient, createObject, createVCard, davRequest, _default as default, deleteCalendarObject, deleteObject, deleteVCard, fetchAddressBooks, fetchCalendarObjects, fetchCalendars, fetchOauthTokens, fetchVCards, freeBusyQuery, getBasicAuthHeaders, getDAVAttribute, getOauthHeaders, isCollectionDirty, makeCalendar, propfind, refreshAccessToken, smartCollectionSync, supportedReportSet, syncCalendars, syncCollection, updateCalendarObject, updateObject, updateVCard, urlContains, urlEquals };
export { type DAVAccount, type DAVAddressBook, DAVAttributeMap, type DAVCalendar, type DAVCalendarObject, DAVClient, type DAVCollection, type DAVCredentials, type DAVDepth, type DAVMethods, DAVNamespace, DAVNamespaceShort, type DAVObject, type DAVRequest, type DAVResponse, type DAVTokens, type DAVVCard, addressBookQuery, calendarMultiGet, calendarQuery, cleanupFalsy, collectionQuery, createAccount, createCalendarObject, createDAVClient, createObject, createVCard, davRequest, _default as default, deleteCalendarObject, deleteObject, deleteVCard, fetchAddressBooks, fetchCalendarObjects, fetchCalendarUserAddresses, fetchCalendars, fetchOauthTokens, fetchVCards, freeBusyQuery, getBasicAuthHeaders, getDAVAttribute, getOauthHeaders, isCollectionDirty, makeCalendar, propfind, refreshAccessToken, smartCollectionSync, supportedReportSet, syncCalendars, syncCollection, updateCalendarObject, updateObject, updateVCard, urlContains, urlEquals };
34 changes: 33 additions & 1 deletion dist/tsdav.esm.js
Original file line number Diff line number Diff line change
Expand Up @@ -755,6 +755,29 @@ var addressBook = /*#__PURE__*/Object.freeze({

/* eslint-disable no-underscore-dangle */
const debug$2 = getLogger('tsdav:calendar');
const fetchCalendarUserAddresses = async (params) => {
var _a, _b, _c;
const { account, headers, headersToExclude, fetchOptions = {} } = params;
const requiredFields = ['principalUrl', 'rootUrl'];
if (!hasFields(account, requiredFields)) {
throw new Error(`account must have ${findMissingFieldNames(account, requiredFields)} before fetchUserAddresses`);
}
debug$2(`Fetch user addresses from ${account.principalUrl}`);
const responses = await propfind({
url: account.principalUrl,
props: { [`${DAVNamespaceShort.CALDAV}:calendar-user-address-set`]: {} },
depth: '0',
headers: excludeHeaders(headers, headersToExclude),
fetchOptions,
});
const matched = responses.find((r) => urlContains(account.principalUrl, r.href));
if (!matched || !matched.ok) {
throw new Error('cannot find calendarUserAddresses');
}
const addresses = ((_c = (_b = (_a = matched === null || matched === void 0 ? void 0 : matched.props) === null || _a === void 0 ? void 0 : _a.calendarUserAddressSet) === null || _b === void 0 ? void 0 : _b.href) === null || _c === void 0 ? void 0 : _c.filter(Boolean)) || [];
debug$2(`Fetched calendar user addresses ${addresses}`);
return addresses;
};
const calendarQuery = async (params) => {
const { url, props, filters, timezone, depth, headers, headersToExclude, fetchOptions = {} } = params;
return collectionQuery({
Expand Down Expand Up @@ -1170,6 +1193,7 @@ var calendar = /*#__PURE__*/Object.freeze({
createCalendarObject: createCalendarObject,
deleteCalendarObject: deleteCalendarObject,
fetchCalendarObjects: fetchCalendarObjects,
fetchCalendarUserAddresses: fetchCalendarUserAddresses,
fetchCalendars: fetchCalendars,
freeBusyQuery: freeBusyQuery,
makeCalendar: makeCalendar,
Expand Down Expand Up @@ -1530,6 +1554,10 @@ const createDAVClient = async (params) => {
headers: authHeaders,
account: defaultAccount,
});
const fetchCalendarUserAddresses$1 = defaultParam(fetchCalendarUserAddresses, {
headers: authHeaders,
account: defaultAccount,
});
const fetchCalendarObjects$1 = defaultParam(fetchCalendarObjects, {
headers: authHeaders,
});
Expand Down Expand Up @@ -1575,6 +1603,7 @@ const createDAVClient = async (params) => {
isCollectionDirty: isCollectionDirty$1,
smartCollectionSync: smartCollectionSync$1,
fetchCalendars: fetchCalendars$1,
fetchCalendarUserAddresses: fetchCalendarUserAddresses$1,
fetchCalendarObjects: fetchCalendarObjects$1,
createCalendarObject: createCalendarObject$1,
updateCalendarObject: updateCalendarObject$1,
Expand Down Expand Up @@ -1713,6 +1742,9 @@ class DAVClient {
async fetchCalendars(...params) {
return defaultParam(fetchCalendars, { headers: this.authHeaders, account: this.account, fetchOptions: this.fetchOptions })(params === null || params === void 0 ? void 0 : params[0]);
}
async fetchCalendarUserAddresses(...params) {
return defaultParam(fetchCalendarUserAddresses, { headers: this.authHeaders, account: this.account, fetchOptions: this.fetchOptions })(params === null || params === void 0 ? void 0 : params[0]);
}
async fetchCalendarObjects(...params) {
return defaultParam(fetchCalendarObjects, { headers: this.authHeaders, fetchOptions: this.fetchOptions })(params[0]);
}
Expand Down Expand Up @@ -1775,4 +1807,4 @@ var index = {
...requestHelpers,
};

export { DAVAttributeMap, DAVClient, DAVNamespace, DAVNamespaceShort, addressBookQuery, calendarMultiGet, calendarQuery, cleanupFalsy, collectionQuery, createAccount, createCalendarObject, createDAVClient, createObject, createVCard, davRequest, index as default, deleteCalendarObject, deleteObject, deleteVCard, fetchAddressBooks, fetchCalendarObjects, fetchCalendars, fetchOauthTokens, fetchVCards, freeBusyQuery, getBasicAuthHeaders, getDAVAttribute, getOauthHeaders, isCollectionDirty, makeCalendar, propfind, refreshAccessToken, smartCollectionSync, supportedReportSet, syncCalendars, syncCollection, updateCalendarObject, updateObject, updateVCard, urlContains, urlEquals };
export { DAVAttributeMap, DAVClient, DAVNamespace, DAVNamespaceShort, addressBookQuery, calendarMultiGet, calendarQuery, cleanupFalsy, collectionQuery, createAccount, createCalendarObject, createDAVClient, createObject, createVCard, davRequest, index as default, deleteCalendarObject, deleteObject, deleteVCard, fetchAddressBooks, fetchCalendarObjects, fetchCalendarUserAddresses, fetchCalendars, fetchOauthTokens, fetchVCards, freeBusyQuery, getBasicAuthHeaders, getDAVAttribute, getOauthHeaders, isCollectionDirty, makeCalendar, propfind, refreshAccessToken, smartCollectionSync, supportedReportSet, syncCalendars, syncCollection, updateCalendarObject, updateObject, updateVCard, urlContains, urlEquals };
Loading

0 comments on commit 91da0ab

Please sign in to comment.