import googleCalendar from "../../google_calendar.app.mjs";
import utils from "../../common/utils.mjs";
import { ConfigurationError } from "@pipedream/platform";
export default {
key: "google_calendar-list-events",
name: "List Events",
description: "Retrieve a list of event from the Google Calendar. [See the documentation](https://developers.google.com/calendar/api/v3/reference/events/list)",
version: "0.0.7",
type: "action",
props: {
googleCalendar,
calendarId: {
propDefinition: [
googleCalendar,
"calendarId",
],
},
iCalUID: {
propDefinition: [
googleCalendar,
"iCalUID",
],
},
maxAttendees: {
propDefinition: [
googleCalendar,
"maxAttendees",
],
},
maxResults: {
propDefinition: [
googleCalendar,
"maxResults",
],
},
orderBy: {
propDefinition: [
googleCalendar,
"orderBy",
],
default: "",
},
privateExtendedProperty: {
propDefinition: [
googleCalendar,
"privateExtendedProperty",
],
},
q: {
propDefinition: [
googleCalendar,
"q",
],
},
sharedExtendedProperty: {
propDefinition: [
googleCalendar,
"sharedExtendedProperty",
],
},
showDeleted: {
propDefinition: [
googleCalendar,
"showDeleted",
],
},
showHiddenInvitations: {
propDefinition: [
googleCalendar,
"showHiddenInvitations",
],
},
singleEvents: {
propDefinition: [
googleCalendar,
"singleEvents",
],
},
timeMax: {
propDefinition: [
googleCalendar,
"timeMax",
],
},
timeMin: {
propDefinition: [
googleCalendar,
"timeMin",
],
},
timeZone: {
propDefinition: [
googleCalendar,
"timeZone",
],
},
updatedMin: {
propDefinition: [
googleCalendar,
"updatedMin",
],
},
eventTypes: {
propDefinition: [
googleCalendar,
"eventTypes",
],
},
},
async run({ $ }) {
if (this.orderBy === "startTime" && !this.singleEvents) {
throw new ConfigurationError("Single Events must be `true` to order by `startTime`");
}
const args = utils.filterEmptyValues({
calendarId: this.calendarId,
iCalUID: this.iCalUID,
maxAttendees: this.maxAttendees,
orderBy: this.orderBy || undefined,
privateExtendedProperty: this.privateExtendedProperty,
q: this.q,
sharedExtendedProperty: this.sharedExtendedProperty,
showDeleted: this.showDeleted,
showHiddenInvitations: this.showHiddenInvitations,
singleEvents: this.singleEvents,
timeMax: this.timeMax,
timeMin: this.timeMin,
timeZone: this.timeZone,
updatedMin: this.updatedMin,
eventTypes: this.eventTypes,
});
const events = [];
do {
const {
items, nextPageToken,
} = await this.googleCalendar.listEvents(args);
events.push(...items);
args.pageToken = nextPageToken;
} while (args.pageToken && (!this.maxResults || events.length < this.maxResults));
if (events.length > this.maxResults) {
events.length = this.maxResults;
}
$.export("$summary", `Successfully retrieved ${events.length} event${events.length === 1
? ""
: "s"}`);
return events;
},
};