outlook-events-client
Version:
TypeScript library to manage Outlook calendar events using the Microsoft Graph API.
116 lines • 4.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OutlookEventsClient = void 0;
const utils_1 = require("./utils");
/**
* Client for managing Outlook calendar events using Microsoft Graph API.
*/
class OutlookEventsClient {
client;
/**
* Creates a new OutlookEventsClient instance.
* @param options Client credentials for authentication.
*/
constructor(options) {
this.client = (0, utils_1.createGraphClient)(options);
}
/**
* Creates a new calendar event for a user.
* @param event The event data to create.
* @param userPrincipalName The user's principal name (email or UPN).
* @returns The created Outlook event.
* @throws Error if the event cannot be created.
*/
async createEvent(event, userPrincipalName) {
if (!event || typeof event !== "object" || Array.isArray(event)) {
throw new Error("A valid event object is required");
}
if (!userPrincipalName ||
typeof userPrincipalName !== "string" ||
userPrincipalName.trim() === "") {
throw new Error("A valid userPrincipalName is required");
}
try {
const response = await this.client
.api(`/users/${userPrincipalName}/calendar/events`)
.post(event);
return response;
}
catch (error) {
if (error instanceof Error) {
console.error("Error creating event:", error.message);
}
else {
console.error("Error creating event:", error);
}
throw new Error("Failed to create event");
}
}
/**
* Cancels an existing calendar event for a user.
* @param eventId The ID of the event to cancel.
* @param userPrincipalName The user's principal name (email or UPN).
* @param comment The cancellation comment.
* @throws Error if the event cannot be canceled.
*/
async cancelEvent(eventId, userPrincipalName, comment) {
if (!eventId || typeof eventId !== "string" || eventId.trim() === "") {
throw new Error("A valid eventId is required");
}
if (!userPrincipalName ||
typeof userPrincipalName !== "string" ||
userPrincipalName.trim() === "") {
throw new Error("A valid userPrincipalName is required");
}
try {
await this.client
.api(`/users/${userPrincipalName}/calendar/events/${eventId}/cancel`)
.post({ Comment: comment });
}
catch (error) {
if (error instanceof Error) {
console.error("Error canceling event:", error.message);
}
else {
console.error("Error canceling event:", error);
}
throw new Error("Failed to cancel event");
}
}
/**
* Updates an existing calendar event for a user.
* @param eventId The ID of the event to update.
* @param userPrincipalName The user's principal name (email or UPN).
* @param eventPatch The patch object with updated event fields.
* @throws Error if the event cannot be updated.
*/
async updateEvent(eventId, userPrincipalName, eventPatch) {
if (!eventPatch || typeof eventPatch !== "object" || Array.isArray(eventPatch)) {
throw new Error("A valid eventPatch object is required");
}
if (!eventId || typeof eventId !== "string" || eventId.trim() === "") {
throw new Error("A valid eventId is required");
}
if (!userPrincipalName ||
typeof userPrincipalName !== "string" ||
userPrincipalName.trim() === "") {
throw new Error("A valid userPrincipalName is required");
}
try {
await this.client
.api(`/users/${userPrincipalName}/calendar/events/${eventId}`)
.patch(eventPatch);
}
catch (error) {
if (error instanceof Error) {
console.error("Error updating event:", error.message);
}
else {
console.error("Error updating event:", error);
}
throw new Error("Failed to update event");
}
}
}
exports.OutlookEventsClient = OutlookEventsClient;
//# sourceMappingURL=outlook-events-client.js.map