Skip to content

Commit 13eaccc

Browse files
committed
Adding 'new event' webhook source
1 parent 8efadb0 commit 13eaccc

File tree

3 files changed

+109
-0
lines changed

3 files changed

+109
-0
lines changed

components/calendarhero/calendarhero.app.mjs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,20 @@ export default {
2929
...args,
3030
});
3131
},
32+
createWebhook({
33+
event, ...args
34+
}) {
35+
return this._makeRequest({
36+
method: "post",
37+
url: `webhook/${event}`,
38+
...args,
39+
});
40+
},
41+
deleteWebhook(event) {
42+
return this._makeRequest({
43+
method: "delete",
44+
url: `webhook/${event}`,
45+
});
46+
},
3247
},
3348
};
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
export const WEBHOOK_EVENT_TYPE_OPTIONS = [
2+
{
3+
label: "New Meeting Request",
4+
value: "new_meeting_request",
5+
},
6+
{
7+
label: "Meeting Request Succeeded",
8+
value: "meeting_request_success",
9+
},
10+
{
11+
label: "Meeting Request Expired",
12+
value: "meeting_request_expired",
13+
},
14+
{
15+
label: "Meeting Request Cancelled",
16+
value: "meeting_request_cancelled",
17+
},
18+
{
19+
label: "Meeting Rescheduled",
20+
value: "meeting_rescheduled",
21+
},
22+
{
23+
label: "Meeting Started",
24+
value: "meeting_started",
25+
},
26+
{
27+
label: "Meeting Completed",
28+
value: "meeting_completed",
29+
},
30+
{
31+
label: "New Contact Added",
32+
value: "new_contact_added",
33+
},
34+
];
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import app from "../../calendarhero.app.mjs";
2+
import { WEBHOOK_EVENT_TYPE_OPTIONS } from "../../common/constants.mjs";
3+
4+
export default {
5+
key: "calendarhero-new-event-instant",
6+
name: "New Event (Instant)",
7+
description:
8+
"Emit new event when a selected type of CalendarHero event occurs. [See the documentation](https://api.calendarhero.com/documentation#/webhook/postWebhookEvent)",
9+
type: "source",
10+
version: "0.0.{{ts}}",
11+
dedupe: "unique",
12+
props: {
13+
app,
14+
http: "$.interface.http",
15+
event: {
16+
type: "string",
17+
label: "Event Type",
18+
description: "Select the type of event that will trigger this source",
19+
options: WEBHOOK_EVENT_TYPE_OPTIONS,
20+
},
21+
},
22+
hooks: {
23+
async activate() {
24+
const {
25+
app,
26+
event,
27+
http: { endpoint: hookUrl },
28+
} = this;
29+
await app.createWebhook({
30+
event,
31+
data: {
32+
hookUrl,
33+
},
34+
});
35+
},
36+
async deactivate() {
37+
const {
38+
app,
39+
event,
40+
http: { endpoint: hookUrl },
41+
} = this;
42+
await app.deleteWebhook({
43+
event,
44+
data: {
45+
hookUrl,
46+
},
47+
});
48+
},
49+
},
50+
async run(event) {
51+
const { body } = event;
52+
const ts = Date.now();
53+
this.$emit(body, {
54+
id: ts,
55+
summary: "New event",
56+
ts,
57+
});
58+
},
59+
// sampleEmit,
60+
};

0 commit comments

Comments
 (0)