From d9026d64694d9ac55999c8228509530fe70f23eb Mon Sep 17 00:00:00 2001 From: Andrew Chuang Date: Wed, 25 May 2022 15:09:31 -0300 Subject: [PATCH 01/11] change timer to webhooks --- components/gorgias/gorgias.app.mjs | 28 +++++++++++++ components/gorgias/sources/common/base.mjs | 49 ++++++++++++++++++---- 2 files changed, 70 insertions(+), 7 deletions(-) diff --git a/components/gorgias/gorgias.app.mjs b/components/gorgias/gorgias.app.mjs index 8a3310f1755ef..2c3a609a59414 100644 --- a/components/gorgias/gorgias.app.mjs +++ b/components/gorgias/gorgias.app.mjs @@ -153,6 +153,34 @@ export default { cursor = meta.next_cursor; } while (cursor); }, + async createWebhook({ + url, + eventType, + }) { + return this._makeRequest({ + path: "integrations", + method: "post", + data: { + name: `pipedream-${url}`, + type: "http", + http: { + method: "GET", + request_content_type: "application/json", + response_content_type: "application/json", + url, + triggers: { + [eventType]: true, + }, + }, + }, + }); + }, + async deleteWebhook({ id }) { + return this._makeRequest({ + path: `integrations/${id}`, + method: "delete", + }); + }, async getEvents({ $, params, }) { diff --git a/components/gorgias/sources/common/base.mjs b/components/gorgias/sources/common/base.mjs index 1f6b70c5f6d53..9bc6a927047bb 100644 --- a/components/gorgias/sources/common/base.mjs +++ b/components/gorgias/sources/common/base.mjs @@ -5,14 +5,34 @@ export default { props: { gorgias, db: "$.service.db", - timer: { - type: "$.interface.timer", - default: { - intervalSeconds: 15 * 60, - }, + http: "$.interface.http", + }, + hooks: { + async deploy() { + await this.createWebhook(); + }, + async activate() { + const webhookId = this.getWebhookId(); + if (webhookId) { + console.log(`Webhook ${webhookId} active`); + } else { + await this.createWebhook(); + } + }, + async deactivate() { + await this.deleteWebhook(); }, }, methods: { + getEventTypes() { + throw new Error("getEventTypes is not implemented"); + }, + getWebhookId() { + return this.db.get("webhookId"); + }, + setWebhookId(webhookId) { + this.db.set("webhookId", webhookId); + }, getNextCursor() { return this.db.get("nextCursor"); }, @@ -21,8 +41,23 @@ export default { this.db.set("nextCursor", nextCursor); } }, - getEventTypes() { - throw new Error("getEventTypes is not implemented"); + async createWebhook() { + console.log("Creating webhook..."); + const { id } = await this.gorgias.createWebhook({ + url: this.http.endpoint, + eventType: this.getEventTypes().types, + }); + this.setWebhookId(id); + console.log(`Webhook ${id} created successfully`); + }, + async deleteWebhook() { + const id = this.getWebhookId(); + console.log(`Deleting webhook ${id}...`); + await this.gorgias.deleteWebhook({ + id, + }); + this.setWebhookId(null); + console.log(`Webhook ${id} deleted successfully`); }, async emitEvents(events) { for (const event of events) { From 1811afc139902c299b1e6d88be66b51660e7413e Mon Sep 17 00:00:00 2001 From: Andrew Chuang Date: Wed, 25 May 2022 20:03:23 -0300 Subject: [PATCH 02/11] sources now emit webhook events --- components/gorgias/gorgias.app.mjs | 12 +++- components/gorgias/sources/common/base.mjs | 64 +++++++++++-------- .../gorgias/sources/new-events/new-events.mjs | 16 ----- .../sources/ticket-created/ticket-created.mjs | 14 +++- .../ticket-message-created.mjs | 20 +++++- .../sources/ticket-updated/ticket-updated.mjs | 14 +++- .../sources/new-events/new-events.mjs | 13 ---- 7 files changed, 90 insertions(+), 63 deletions(-) delete mode 100644 components/gorgias/sources/new-events/new-events.mjs delete mode 100644 components/gorgias_oauth/sources/new-events/new-events.mjs diff --git a/components/gorgias/gorgias.app.mjs b/components/gorgias/gorgias.app.mjs index 2c3a609a59414..277810051e772 100644 --- a/components/gorgias/gorgias.app.mjs +++ b/components/gorgias/gorgias.app.mjs @@ -156,6 +156,7 @@ export default { async createWebhook({ url, eventType, + form, }) { return this._makeRequest({ path: "integrations", @@ -165,9 +166,10 @@ export default { type: "http", http: { method: "GET", - request_content_type: "application/json", + request_content_type: "application/x-www-form-urlencoded", response_content_type: "application/json", url, + form, triggers: { [eventType]: true, }, @@ -246,5 +248,13 @@ export default { params, }); }, + async retrieveTicket({ + $, id, + }) { + return this._makeRequest({ + $, + path: `tickets/${id}`, + }); + }, }, }; diff --git a/components/gorgias/sources/common/base.mjs b/components/gorgias/sources/common/base.mjs index 9bc6a927047bb..8316fcd8c7930 100644 --- a/components/gorgias/sources/common/base.mjs +++ b/components/gorgias/sources/common/base.mjs @@ -9,6 +9,21 @@ export default { }, hooks: { async deploy() { + // Retrieve historical events + + // const params = { + // cursor: this.getNextCursor(), + // }; + + // const { + // data: events, + // meta, + // } = await this.gorgias.getEvents({ + // params, + // }); + + // this.emitEvents(events); + // this.setNextCursor(meta.next_cursor); await this.createWebhook(); }, async activate() { @@ -24,8 +39,11 @@ export default { }, }, methods: { - getEventTypes() { - throw new Error("getEventTypes is not implemented"); + getEventType() { + throw new Error("getEventType is not implemented"); + }, + getData() { + throw new Error("getData is not implemented"); }, getWebhookId() { return this.db.get("webhookId"); @@ -45,7 +63,8 @@ export default { console.log("Creating webhook..."); const { id } = await this.gorgias.createWebhook({ url: this.http.endpoint, - eventType: this.getEventTypes().types, + eventType: this.getEventType(), + form: this.getData(), }); this.setWebhookId(id); console.log(`Webhook ${id} created successfully`); @@ -59,30 +78,21 @@ export default { this.setWebhookId(null); console.log(`Webhook ${id} deleted successfully`); }, - async emitEvents(events) { - for (const event of events) { - this.$emit(event, { - id: event.id, - ts: Date.parse(event.created_datetime), - summary: `New ${event.type} event: ${event.id}`, - }); - } + async retrieveTicket(id) { + console.log(`Received ${this.getEventType()} for ticket ${id}`); + console.log(`Fetching data for ticket ${id}`); + return this.gorgias.retrieveTicket({ + id, + }); + }, + async emitEvent(event, ts) { + console.log(`Emitting event ${event.id}:`); + console.log(event); + this.$emit(event, { + id: event.id, + ts: Date.parse(ts), + summary: `New ${this.getEventType()}: ${event.id}`, + }); }, - }, - async run() { - const params = { - cursor: this.getNextCursor(), - ...this.getEventTypes(), - }; - - const { - data: events, - meta, - } = await this.gorgias.getEvents({ - params, - }); - - this.emitEvents(events); - this.setNextCursor(meta.next_cursor); }, }; diff --git a/components/gorgias/sources/new-events/new-events.mjs b/components/gorgias/sources/new-events/new-events.mjs deleted file mode 100644 index 5877f4d6904ef..0000000000000 --- a/components/gorgias/sources/new-events/new-events.mjs +++ /dev/null @@ -1,16 +0,0 @@ -import base from "../common/base.mjs"; - -export default { - ...base, - key: "gorgias-new-events", - name: "New Events", - description: "Emit new Gorgias event. [See the docs](https://developers.gorgias.com/reference/the-event-object)", - version: "0.1.0", - type: "source", - methods: { - ...base.methods, - getEventTypes() { - return {}; - }, - }, -}; diff --git a/components/gorgias/sources/ticket-created/ticket-created.mjs b/components/gorgias/sources/ticket-created/ticket-created.mjs index d617adbf4a65d..dc0840a4ef2ab 100644 --- a/components/gorgias/sources/ticket-created/ticket-created.mjs +++ b/components/gorgias/sources/ticket-created/ticket-created.mjs @@ -10,10 +10,20 @@ export default { type: "source", methods: { ...base.methods, - getEventTypes() { + getEventType() { + return eventTypes.TICKET_CREATED; + }, + getData() { return { - types: eventTypes.TICKET_CREATED, + id: "{{ ticket.id }}", }; }, }, + async run(event) { + console.log("Raw received event:"); + console.log(event); + const ticket = await this.retrieveTicket(event.query.id); + const { created_datetime: createdAt } = ticket; + this.emitEvent(ticket, createdAt); + }, }; diff --git a/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs b/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs index ffde1035225fc..9cd3a5d2e1bae 100644 --- a/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs +++ b/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs @@ -10,10 +10,26 @@ export default { type: "source", methods: { ...base.methods, - getEventTypes() { + getEventType() { + return eventTypes.TICKET_MESSAGE_CREATED; + }, + getData() { return { - types: eventTypes.TICKET_MESSAGE_CREATED, + messages: "{{ ticket.messages }}", }; }, }, + async run(event) { + console.log("Raw received event:"); + console.log(event); + // Have to convert python dict to JS + const messages = event.query.messages + .replace(/'/g, "\"") + .replace(/True/g, "true") + .replace(/False/g, "false"); + console.log("Extracting latest message:"); + const message = JSON.parse(messages).pop(); + const { created_datetime: createdAt } = message; + this.emitEvent(message, createdAt); + }, }; diff --git a/components/gorgias/sources/ticket-updated/ticket-updated.mjs b/components/gorgias/sources/ticket-updated/ticket-updated.mjs index d2b7e1a090661..68d63200ce355 100644 --- a/components/gorgias/sources/ticket-updated/ticket-updated.mjs +++ b/components/gorgias/sources/ticket-updated/ticket-updated.mjs @@ -10,10 +10,20 @@ export default { type: "source", methods: { ...base.methods, - getEventTypes() { + getEventType() { + return eventTypes.TICKET_UPDATED; + }, + getData() { return { - types: eventTypes.TICKET_UPDATED, + id: "{{ ticket.id }}", }; }, }, + async run(event) { + console.log("Raw received event:"); + console.log(event); + const ticket = await this.retrieveTicket(event.query.id); + const { updated_datetime: updatedAt } = ticket; + this.emitEvent(ticket, updatedAt); + }, }; diff --git a/components/gorgias_oauth/sources/new-events/new-events.mjs b/components/gorgias_oauth/sources/new-events/new-events.mjs deleted file mode 100644 index f5a5d8cd550f5..0000000000000 --- a/components/gorgias_oauth/sources/new-events/new-events.mjs +++ /dev/null @@ -1,13 +0,0 @@ -import base from "../../../gorgias/sources/new-events/new-events.mjs"; -import overrideApp from "../../common/override-app.mjs"; - -overrideApp(base); - -export default { - ...base, - key: "gorgias_oauth-new-events", - name: "New Events", - description: "Emit new Gorgias event. [See the docs](https://developers.gorgias.com/reference/the-event-object)", - version: "0.0.1", - type: "source", -}; From eeb924d8228c652461193edb342435bb208fc3e1 Mon Sep 17 00:00:00 2001 From: Andrew Chuang Date: Thu, 26 May 2022 10:14:18 -0300 Subject: [PATCH 03/11] fetch historical events on deploy --- components/gorgias/sources/common/base.mjs | 84 +++++++------------ .../sources/ticket-created/ticket-created.mjs | 3 +- .../ticket-message-created.mjs | 3 +- .../sources/ticket-updated/ticket-updated.mjs | 3 +- 4 files changed, 35 insertions(+), 58 deletions(-) diff --git a/components/gorgias/sources/common/base.mjs b/components/gorgias/sources/common/base.mjs index 8316fcd8c7930..f70894da76380 100644 --- a/components/gorgias/sources/common/base.mjs +++ b/components/gorgias/sources/common/base.mjs @@ -9,36 +9,43 @@ export default { }, hooks: { async deploy() { - // Retrieve historical events - - // const params = { - // cursor: this.getNextCursor(), - // }; - - // const { - // data: events, - // meta, - // } = await this.gorgias.getEvents({ - // params, - // }); - - // this.emitEvents(events); - // this.setNextCursor(meta.next_cursor); - await this.createWebhook(); + console.log("Retrieving historical events..."); + const events = this.gorgias.paginate({ + fn: this.gorgias.getEvents, + params: { + types: this.getEventType(), + }, + }); + for await (const event of events) { + this.emitEvent(event); + } }, async activate() { - const webhookId = this.getWebhookId(); - if (webhookId) { - console.log(`Webhook ${webhookId} active`); - } else { - await this.createWebhook(); - } + console.log("Creating webhook..."); + const { id } = await this.gorgias.createWebhook({ + url: this.http.endpoint, + eventType: this.getEventType(), + form: this.getData(), + }); + this.setWebhookId(id); + console.log(`Webhook ${id} created successfully`); }, async deactivate() { - await this.deleteWebhook(); + const id = this.getWebhookId(); + console.log(`Deleting webhook ${id}...`); + await this.gorgias.deleteWebhook({ + id, + }); + this.setWebhookId(); + console.log(`Webhook ${id} deleted successfully`); }, }, methods: { + getTimestampKey() { + return this.getEventType().includes("updated") + ? "updated_datetime" + : "created_datetime"; + }, getEventType() { throw new Error("getEventType is not implemented"); }, @@ -51,33 +58,6 @@ export default { setWebhookId(webhookId) { this.db.set("webhookId", webhookId); }, - getNextCursor() { - return this.db.get("nextCursor"); - }, - setNextCursor(nextCursor) { - if (nextCursor) { - this.db.set("nextCursor", nextCursor); - } - }, - async createWebhook() { - console.log("Creating webhook..."); - const { id } = await this.gorgias.createWebhook({ - url: this.http.endpoint, - eventType: this.getEventType(), - form: this.getData(), - }); - this.setWebhookId(id); - console.log(`Webhook ${id} created successfully`); - }, - async deleteWebhook() { - const id = this.getWebhookId(); - console.log(`Deleting webhook ${id}...`); - await this.gorgias.deleteWebhook({ - id, - }); - this.setWebhookId(null); - console.log(`Webhook ${id} deleted successfully`); - }, async retrieveTicket(id) { console.log(`Received ${this.getEventType()} for ticket ${id}`); console.log(`Fetching data for ticket ${id}`); @@ -85,12 +65,12 @@ export default { id, }); }, - async emitEvent(event, ts) { + async emitEvent(event) { console.log(`Emitting event ${event.id}:`); console.log(event); this.$emit(event, { id: event.id, - ts: Date.parse(ts), + ts: Date.parse(event[this.getTimestampKey()]), summary: `New ${this.getEventType()}: ${event.id}`, }); }, diff --git a/components/gorgias/sources/ticket-created/ticket-created.mjs b/components/gorgias/sources/ticket-created/ticket-created.mjs index dc0840a4ef2ab..6d2030fc44f92 100644 --- a/components/gorgias/sources/ticket-created/ticket-created.mjs +++ b/components/gorgias/sources/ticket-created/ticket-created.mjs @@ -23,7 +23,6 @@ export default { console.log("Raw received event:"); console.log(event); const ticket = await this.retrieveTicket(event.query.id); - const { created_datetime: createdAt } = ticket; - this.emitEvent(ticket, createdAt); + this.emitEvent(ticket); }, }; diff --git a/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs b/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs index 9cd3a5d2e1bae..313351cd37a85 100644 --- a/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs +++ b/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs @@ -29,7 +29,6 @@ export default { .replace(/False/g, "false"); console.log("Extracting latest message:"); const message = JSON.parse(messages).pop(); - const { created_datetime: createdAt } = message; - this.emitEvent(message, createdAt); + this.emitEvent(message); }, }; diff --git a/components/gorgias/sources/ticket-updated/ticket-updated.mjs b/components/gorgias/sources/ticket-updated/ticket-updated.mjs index 68d63200ce355..e91fbf2ba67b9 100644 --- a/components/gorgias/sources/ticket-updated/ticket-updated.mjs +++ b/components/gorgias/sources/ticket-updated/ticket-updated.mjs @@ -23,7 +23,6 @@ export default { console.log("Raw received event:"); console.log(event); const ticket = await this.retrieveTicket(event.query.id); - const { updated_datetime: updatedAt } = ticket; - this.emitEvent(ticket, updatedAt); + this.emitEvent(ticket); }, }; From a9225b6d3ce460b26d458d4be62524bae5879f2c Mon Sep 17 00:00:00 2001 From: Andrew Chuang Date: Thu, 26 May 2022 10:41:44 -0300 Subject: [PATCH 04/11] bump versions --- components/gorgias/sources/ticket-created/ticket-created.mjs | 2 +- .../sources/ticket-message-created/ticket-message-created.mjs | 2 +- components/gorgias/sources/ticket-updated/ticket-updated.mjs | 2 +- .../gorgias_oauth/sources/ticket-created/ticket-created.mjs | 2 +- .../sources/ticket-message-created/ticket-message-created.mjs | 2 +- .../gorgias_oauth/sources/ticket-updated/ticket-updated.mjs | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/components/gorgias/sources/ticket-created/ticket-created.mjs b/components/gorgias/sources/ticket-created/ticket-created.mjs index 6d2030fc44f92..e0d4cd2c40182 100644 --- a/components/gorgias/sources/ticket-created/ticket-created.mjs +++ b/components/gorgias/sources/ticket-created/ticket-created.mjs @@ -6,7 +6,7 @@ export default { key: "gorgias-ticket-created", name: "New Ticket", description: "Emit new event when a ticket is created. [See the docs](https://developers.gorgias.com/reference/the-event-object)", - version: "0.0.1", + version: "0.0.2", type: "source", methods: { ...base.methods, diff --git a/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs b/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs index 313351cd37a85..5cf30edaa52e5 100644 --- a/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs +++ b/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs @@ -6,7 +6,7 @@ export default { key: "gorgias-ticket-messaged-created", name: "New Ticket Message", description: "Emit new event when a ticket message is created. [See the docs](https://developers.gorgias.com/reference/the-event-object)", - version: "0.0.1", + version: "0.0.2", type: "source", methods: { ...base.methods, diff --git a/components/gorgias/sources/ticket-updated/ticket-updated.mjs b/components/gorgias/sources/ticket-updated/ticket-updated.mjs index e91fbf2ba67b9..f2f8bfeea6b5c 100644 --- a/components/gorgias/sources/ticket-updated/ticket-updated.mjs +++ b/components/gorgias/sources/ticket-updated/ticket-updated.mjs @@ -6,7 +6,7 @@ export default { key: "gorgias-ticket-updated", name: "New Updated Ticket", description: "Emit new event when a ticket is updated. [See the docs](https://developers.gorgias.com/reference/the-event-object)", - version: "0.0.1", + version: "0.0.2", type: "source", methods: { ...base.methods, diff --git a/components/gorgias_oauth/sources/ticket-created/ticket-created.mjs b/components/gorgias_oauth/sources/ticket-created/ticket-created.mjs index de43ef8ba8dad..5e5b8ad9b7659 100644 --- a/components/gorgias_oauth/sources/ticket-created/ticket-created.mjs +++ b/components/gorgias_oauth/sources/ticket-created/ticket-created.mjs @@ -8,6 +8,6 @@ export default { key: "gorgias_oauth-ticket-created", name: "New Ticket", description: "Emit new event when a ticket is created. [See the docs](https://developers.gorgias.com/reference/the-event-object)", - version: "0.0.1", + version: "0.0.2", type: "source", }; diff --git a/components/gorgias_oauth/sources/ticket-message-created/ticket-message-created.mjs b/components/gorgias_oauth/sources/ticket-message-created/ticket-message-created.mjs index b13b60d5ea82d..296fced37ce13 100644 --- a/components/gorgias_oauth/sources/ticket-message-created/ticket-message-created.mjs +++ b/components/gorgias_oauth/sources/ticket-message-created/ticket-message-created.mjs @@ -8,6 +8,6 @@ export default { key: "gorgias_oauth-ticket-messaged-created", name: "New Ticket Message", description: "Emit new event when a ticket message is created. [See the docs](https://developers.gorgias.com/reference/the-event-object)", - version: "0.0.1", + version: "0.0.2", type: "source", }; diff --git a/components/gorgias_oauth/sources/ticket-updated/ticket-updated.mjs b/components/gorgias_oauth/sources/ticket-updated/ticket-updated.mjs index b560fdfd8f62f..37be135af958e 100644 --- a/components/gorgias_oauth/sources/ticket-updated/ticket-updated.mjs +++ b/components/gorgias_oauth/sources/ticket-updated/ticket-updated.mjs @@ -8,6 +8,6 @@ export default { key: "gorgias_oauth-ticket-updated", name: "New Updated Ticket", description: "Emit new event when a ticket is updated. [See the docs](https://developers.gorgias.com/reference/the-event-object)", - version: "0.0.1", + version: "0.0.2", type: "source", }; From 70e69acacb13038382d3135efd8dcf153a2254ae Mon Sep 17 00:00:00 2001 From: Andrew Chuang Date: Fri, 27 May 2022 11:26:08 -0300 Subject: [PATCH 05/11] fix event id + timestamp --- components/gorgias/sources/common/base.mjs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/components/gorgias/sources/common/base.mjs b/components/gorgias/sources/common/base.mjs index f70894da76380..287261a3173c2 100644 --- a/components/gorgias/sources/common/base.mjs +++ b/components/gorgias/sources/common/base.mjs @@ -68,9 +68,10 @@ export default { async emitEvent(event) { console.log(`Emitting event ${event.id}:`); console.log(event); + const ts = Date.parse(event[this.getTimestampKey()]); this.$emit(event, { - id: event.id, - ts: Date.parse(event[this.getTimestampKey()]), + id: `${event.id}_${ts}`, + ts, summary: `New ${this.getEventType()}: ${event.id}`, }); }, From 0b09ea4b459902d23eafe7b809e42d915861d5b6 Mon Sep 17 00:00:00 2001 From: Andrew Chuang Date: Tue, 28 Jun 2022 16:14:32 -0300 Subject: [PATCH 06/11] change webhoook type to post --- components/gorgias/gorgias.app.mjs | 4 ++-- components/gorgias/sources/common/base.mjs | 8 ++++++++ .../gorgias/sources/ticket-created/ticket-created.mjs | 10 ++++------ .../ticket-message-created/ticket-message-created.mjs | 2 +- .../gorgias/sources/ticket-updated/ticket-updated.mjs | 10 ++++------ 5 files changed, 19 insertions(+), 15 deletions(-) diff --git a/components/gorgias/gorgias.app.mjs b/components/gorgias/gorgias.app.mjs index 277810051e772..81324cd7aad52 100644 --- a/components/gorgias/gorgias.app.mjs +++ b/components/gorgias/gorgias.app.mjs @@ -165,8 +165,8 @@ export default { name: `pipedream-${url}`, type: "http", http: { - method: "GET", - request_content_type: "application/x-www-form-urlencoded", + method: "POST", + request_content_type: "application/json", response_content_type: "application/json", url, form, diff --git a/components/gorgias/sources/common/base.mjs b/components/gorgias/sources/common/base.mjs index 287261a3173c2..925159fe56f79 100644 --- a/components/gorgias/sources/common/base.mjs +++ b/components/gorgias/sources/common/base.mjs @@ -52,6 +52,9 @@ export default { getData() { throw new Error("getData is not implemented"); }, + processEvent() { + throw new Error("processEvent is not implemented"); + }, getWebhookId() { return this.db.get("webhookId"); }, @@ -76,4 +79,9 @@ export default { }); }, }, + async run(event) { + console.log("Raw received event:"); + console.log(event); + return this.processEvent(JSON.parse(event.bodyRaw)); + }, }; diff --git a/components/gorgias/sources/ticket-created/ticket-created.mjs b/components/gorgias/sources/ticket-created/ticket-created.mjs index e0d4cd2c40182..33e8ff94b1281 100644 --- a/components/gorgias/sources/ticket-created/ticket-created.mjs +++ b/components/gorgias/sources/ticket-created/ticket-created.mjs @@ -18,11 +18,9 @@ export default { id: "{{ ticket.id }}", }; }, - }, - async run(event) { - console.log("Raw received event:"); - console.log(event); - const ticket = await this.retrieveTicket(event.query.id); - this.emitEvent(ticket); + async processEvent(event) { + const ticket = await this.retrieveTicket(event.id); + this.emitEvent(ticket); + }, }, }; diff --git a/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs b/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs index 5cf30edaa52e5..3c9719e4e5346 100644 --- a/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs +++ b/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs @@ -23,7 +23,7 @@ export default { console.log("Raw received event:"); console.log(event); // Have to convert python dict to JS - const messages = event.query.messages + const messages = event.body.messages .replace(/'/g, "\"") .replace(/True/g, "true") .replace(/False/g, "false"); diff --git a/components/gorgias/sources/ticket-updated/ticket-updated.mjs b/components/gorgias/sources/ticket-updated/ticket-updated.mjs index f2f8bfeea6b5c..276b2c65f79e4 100644 --- a/components/gorgias/sources/ticket-updated/ticket-updated.mjs +++ b/components/gorgias/sources/ticket-updated/ticket-updated.mjs @@ -18,11 +18,9 @@ export default { id: "{{ ticket.id }}", }; }, - }, - async run(event) { - console.log("Raw received event:"); - console.log(event); - const ticket = await this.retrieveTicket(event.query.id); - this.emitEvent(ticket); + async processEvent(event) { + const ticket = await this.retrieveTicket(event.id); + this.emitEvent(ticket); + }, }, }; From 723c6b860d7eb19f9b36959993e278aef442ec9c Mon Sep 17 00:00:00 2001 From: Andrew Chuang Date: Tue, 28 Jun 2022 16:36:22 -0300 Subject: [PATCH 07/11] sync oauth versions with api_key components --- .../gorgias_oauth/actions/create-customer/create-customer.mjs | 3 ++- .../gorgias_oauth/actions/create-ticket/create-ticket.mjs | 3 ++- components/gorgias_oauth/actions/list-tickets/list-tickets.mjs | 3 ++- .../actions/retrieve-customer/retrieve-customer.mjs | 3 ++- .../gorgias_oauth/actions/update-customer/update-customer.mjs | 3 ++- .../gorgias_oauth/sources/ticket-created/ticket-created.mjs | 3 ++- .../sources/ticket-message-created/ticket-message-created.mjs | 3 ++- .../gorgias_oauth/sources/ticket-updated/ticket-updated.mjs | 3 ++- 8 files changed, 16 insertions(+), 8 deletions(-) diff --git a/components/gorgias_oauth/actions/create-customer/create-customer.mjs b/components/gorgias_oauth/actions/create-customer/create-customer.mjs index f17934d54c8a2..0c187514ddc39 100644 --- a/components/gorgias_oauth/actions/create-customer/create-customer.mjs +++ b/components/gorgias_oauth/actions/create-customer/create-customer.mjs @@ -3,11 +3,12 @@ import overrideApp from "../../common/override-app.mjs"; overrideApp(base); +// same version as base +// eslint-disable-next-line pipedream/required-properties-version export default { ...base, key: "gorgias_oauth-create-customer", name: "Create Customer", description: "Create a new customer. [See the docs](https://developers.gorgias.com/reference/post_api-customers)", - version: "0.0.1", type: "action", }; diff --git a/components/gorgias_oauth/actions/create-ticket/create-ticket.mjs b/components/gorgias_oauth/actions/create-ticket/create-ticket.mjs index e4562eaa0a5f7..18b3f692521b2 100644 --- a/components/gorgias_oauth/actions/create-ticket/create-ticket.mjs +++ b/components/gorgias_oauth/actions/create-ticket/create-ticket.mjs @@ -3,11 +3,12 @@ import overrideApp from "../../common/override-app.mjs"; overrideApp(base); +// same version as base +// eslint-disable-next-line pipedream/required-properties-version export default { ...base, key: "gorgias_oauth-create-ticket", name: "Create Ticket", description: "Create a new ticket. [See the docs](https://developers.gorgias.com/reference/post_api-tickets)", - version: "0.0.1", type: "action", }; diff --git a/components/gorgias_oauth/actions/list-tickets/list-tickets.mjs b/components/gorgias_oauth/actions/list-tickets/list-tickets.mjs index 07f411e2a9d0f..e5785acdc36c5 100644 --- a/components/gorgias_oauth/actions/list-tickets/list-tickets.mjs +++ b/components/gorgias_oauth/actions/list-tickets/list-tickets.mjs @@ -3,11 +3,12 @@ import overrideApp from "../../common/override-app.mjs"; overrideApp(base); +// same version as base +// eslint-disable-next-line pipedream/required-properties-version export default { ...base, key: "gorgias_oauth-list-tickets", name: "List Tickets", description: "List all tickets. [See the docs](https://developers.gorgias.com/reference/get_api-tickets)", - version: "0.0.1", type: "action", }; diff --git a/components/gorgias_oauth/actions/retrieve-customer/retrieve-customer.mjs b/components/gorgias_oauth/actions/retrieve-customer/retrieve-customer.mjs index d4af0c745fef7..b5a2ccf7ceb78 100644 --- a/components/gorgias_oauth/actions/retrieve-customer/retrieve-customer.mjs +++ b/components/gorgias_oauth/actions/retrieve-customer/retrieve-customer.mjs @@ -3,11 +3,12 @@ import overrideApp from "../../common/override-app.mjs"; overrideApp(base); +// same version as base +// eslint-disable-next-line pipedream/required-properties-version export default { ...base, key: "gorgias_oauth-retrieve-customer", name: "Retrieve a Customer", description: "Retrieve a customer. [See the docs](https://developers.gorgias.com/reference/get_api-customers-id-)", - version: "0.0.1", type: "action", }; diff --git a/components/gorgias_oauth/actions/update-customer/update-customer.mjs b/components/gorgias_oauth/actions/update-customer/update-customer.mjs index 2b3c01dbcdabc..32402a445705b 100644 --- a/components/gorgias_oauth/actions/update-customer/update-customer.mjs +++ b/components/gorgias_oauth/actions/update-customer/update-customer.mjs @@ -3,11 +3,12 @@ import overrideApp from "../../common/override-app.mjs"; overrideApp(base); +// same version as base +// eslint-disable-next-line pipedream/required-properties-version export default { ...base, key: "gorgias_oauth-update-customer", name: "Update Customer", description: "Update a customer. [See the docs](https://developers.gorgias.com/reference/put_api-customers-id-)", - version: "0.0.1", type: "action", }; diff --git a/components/gorgias_oauth/sources/ticket-created/ticket-created.mjs b/components/gorgias_oauth/sources/ticket-created/ticket-created.mjs index 5e5b8ad9b7659..3f4b31a72cfe9 100644 --- a/components/gorgias_oauth/sources/ticket-created/ticket-created.mjs +++ b/components/gorgias_oauth/sources/ticket-created/ticket-created.mjs @@ -3,11 +3,12 @@ import overrideApp from "../../common/override-app.mjs"; overrideApp(base); +// same version as base +// eslint-disable-next-line pipedream/required-properties-version export default { ...base, key: "gorgias_oauth-ticket-created", name: "New Ticket", description: "Emit new event when a ticket is created. [See the docs](https://developers.gorgias.com/reference/the-event-object)", - version: "0.0.2", type: "source", }; diff --git a/components/gorgias_oauth/sources/ticket-message-created/ticket-message-created.mjs b/components/gorgias_oauth/sources/ticket-message-created/ticket-message-created.mjs index 296fced37ce13..c063585092c35 100644 --- a/components/gorgias_oauth/sources/ticket-message-created/ticket-message-created.mjs +++ b/components/gorgias_oauth/sources/ticket-message-created/ticket-message-created.mjs @@ -3,11 +3,12 @@ import overrideApp from "../../common/override-app.mjs"; overrideApp(base); +// same version as base +// eslint-disable-next-line pipedream/required-properties-version export default { ...base, key: "gorgias_oauth-ticket-messaged-created", name: "New Ticket Message", description: "Emit new event when a ticket message is created. [See the docs](https://developers.gorgias.com/reference/the-event-object)", - version: "0.0.2", type: "source", }; diff --git a/components/gorgias_oauth/sources/ticket-updated/ticket-updated.mjs b/components/gorgias_oauth/sources/ticket-updated/ticket-updated.mjs index 37be135af958e..a5ff73a5b8417 100644 --- a/components/gorgias_oauth/sources/ticket-updated/ticket-updated.mjs +++ b/components/gorgias_oauth/sources/ticket-updated/ticket-updated.mjs @@ -3,11 +3,12 @@ import overrideApp from "../../common/override-app.mjs"; overrideApp(base); +// same version as base +// eslint-disable-next-line pipedream/required-properties-version export default { ...base, key: "gorgias_oauth-ticket-updated", name: "New Updated Ticket", description: "Emit new event when a ticket is updated. [See the docs](https://developers.gorgias.com/reference/the-event-object)", - version: "0.0.2", type: "source", }; From d2ffe547e4f14ae0765360347f5a8b9503f40af7 Mon Sep 17 00:00:00 2001 From: Andrew Chuang Date: Tue, 28 Jun 2022 17:03:10 -0300 Subject: [PATCH 08/11] use whole gorgias context --- components/gorgias/gorgias.app.mjs | 5 ++--- components/gorgias/sources/common/base.mjs | 6 +----- .../sources/ticket-created/ticket-created.mjs | 8 +------- .../ticket-message-created.mjs | 18 ++---------------- .../sources/ticket-updated/ticket-updated.mjs | 8 +------- 5 files changed, 7 insertions(+), 38 deletions(-) diff --git a/components/gorgias/gorgias.app.mjs b/components/gorgias/gorgias.app.mjs index 81324cd7aad52..76a379d044092 100644 --- a/components/gorgias/gorgias.app.mjs +++ b/components/gorgias/gorgias.app.mjs @@ -156,7 +156,6 @@ export default { async createWebhook({ url, eventType, - form, }) { return this._makeRequest({ path: "integrations", @@ -165,11 +164,11 @@ export default { name: `pipedream-${url}`, type: "http", http: { + url, method: "POST", request_content_type: "application/json", response_content_type: "application/json", - url, - form, + form: "{{context}}", triggers: { [eventType]: true, }, diff --git a/components/gorgias/sources/common/base.mjs b/components/gorgias/sources/common/base.mjs index 925159fe56f79..53f24004e11b5 100644 --- a/components/gorgias/sources/common/base.mjs +++ b/components/gorgias/sources/common/base.mjs @@ -25,7 +25,6 @@ export default { const { id } = await this.gorgias.createWebhook({ url: this.http.endpoint, eventType: this.getEventType(), - form: this.getData(), }); this.setWebhookId(id); console.log(`Webhook ${id} created successfully`); @@ -49,9 +48,6 @@ export default { getEventType() { throw new Error("getEventType is not implemented"); }, - getData() { - throw new Error("getData is not implemented"); - }, processEvent() { throw new Error("processEvent is not implemented"); }, @@ -82,6 +78,6 @@ export default { async run(event) { console.log("Raw received event:"); console.log(event); - return this.processEvent(JSON.parse(event.bodyRaw)); + return this.processEvent(event.body); }, }; diff --git a/components/gorgias/sources/ticket-created/ticket-created.mjs b/components/gorgias/sources/ticket-created/ticket-created.mjs index 33e8ff94b1281..606c2479e2bd5 100644 --- a/components/gorgias/sources/ticket-created/ticket-created.mjs +++ b/components/gorgias/sources/ticket-created/ticket-created.mjs @@ -13,14 +13,8 @@ export default { getEventType() { return eventTypes.TICKET_CREATED; }, - getData() { - return { - id: "{{ ticket.id }}", - }; - }, async processEvent(event) { - const ticket = await this.retrieveTicket(event.id); - this.emitEvent(ticket); + this.emitEvent(event.ticket); }, }, }; diff --git a/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs b/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs index 3c9719e4e5346..f67dc2c15062a 100644 --- a/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs +++ b/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs @@ -13,22 +13,8 @@ export default { getEventType() { return eventTypes.TICKET_MESSAGE_CREATED; }, - getData() { - return { - messages: "{{ ticket.messages }}", - }; + async processEvent(event) { + this.emitEvent(event.message); }, }, - async run(event) { - console.log("Raw received event:"); - console.log(event); - // Have to convert python dict to JS - const messages = event.body.messages - .replace(/'/g, "\"") - .replace(/True/g, "true") - .replace(/False/g, "false"); - console.log("Extracting latest message:"); - const message = JSON.parse(messages).pop(); - this.emitEvent(message); - }, }; diff --git a/components/gorgias/sources/ticket-updated/ticket-updated.mjs b/components/gorgias/sources/ticket-updated/ticket-updated.mjs index 276b2c65f79e4..3fe201b1b0f59 100644 --- a/components/gorgias/sources/ticket-updated/ticket-updated.mjs +++ b/components/gorgias/sources/ticket-updated/ticket-updated.mjs @@ -13,14 +13,8 @@ export default { getEventType() { return eventTypes.TICKET_UPDATED; }, - getData() { - return { - id: "{{ ticket.id }}", - }; - }, async processEvent(event) { - const ticket = await this.retrieveTicket(event.id); - this.emitEvent(ticket); + this.emitEvent(event.ticket); }, }, }; From ffcd5e528a9cd0acd94b74234ba3c33ba72e79d4 Mon Sep 17 00:00:00 2001 From: Andrew Chuang Date: Wed, 29 Jun 2022 07:11:55 -0300 Subject: [PATCH 09/11] fetch and emit real object instead of event object --- components/gorgias/sources/common/base.mjs | 7 +++++-- .../gorgias/sources/ticket-created/ticket-created.mjs | 4 ++++ .../ticket-message-created/ticket-message-created.mjs | 4 ++++ .../gorgias/sources/ticket-updated/ticket-updated.mjs | 4 ++++ 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/components/gorgias/sources/common/base.mjs b/components/gorgias/sources/common/base.mjs index 53f24004e11b5..a35d9ad4bea15 100644 --- a/components/gorgias/sources/common/base.mjs +++ b/components/gorgias/sources/common/base.mjs @@ -17,7 +17,7 @@ export default { }, }); for await (const event of events) { - this.emitEvent(event); + await this.processHistoricalEvent(event); } }, async activate() { @@ -51,6 +51,9 @@ export default { processEvent() { throw new Error("processEvent is not implemented"); }, + processHistoricalEvent() { + throw new Error("processHistoricalEvent is not implemented"); + }, getWebhookId() { return this.db.get("webhookId"); }, @@ -64,7 +67,7 @@ export default { id, }); }, - async emitEvent(event) { + emitEvent(event) { console.log(`Emitting event ${event.id}:`); console.log(event); const ts = Date.parse(event[this.getTimestampKey()]); diff --git a/components/gorgias/sources/ticket-created/ticket-created.mjs b/components/gorgias/sources/ticket-created/ticket-created.mjs index 606c2479e2bd5..2040f942beef2 100644 --- a/components/gorgias/sources/ticket-created/ticket-created.mjs +++ b/components/gorgias/sources/ticket-created/ticket-created.mjs @@ -13,6 +13,10 @@ export default { getEventType() { return eventTypes.TICKET_CREATED; }, + async processHistoricalEvent(event) { + const ticket = await this.retrieveTicket(event.object_id); + this.emitEvent(ticket); + }, async processEvent(event) { this.emitEvent(event.ticket); }, diff --git a/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs b/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs index f67dc2c15062a..1c3ceacaccce5 100644 --- a/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs +++ b/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs @@ -13,6 +13,10 @@ export default { getEventType() { return eventTypes.TICKET_MESSAGE_CREATED; }, + async processHistoricalEvent(event) { + const ticketMessage = await this.retrieveTicketMessage(event.object_id); + this.emitEvent(ticketMessage); + }, async processEvent(event) { this.emitEvent(event.message); }, diff --git a/components/gorgias/sources/ticket-updated/ticket-updated.mjs b/components/gorgias/sources/ticket-updated/ticket-updated.mjs index 3fe201b1b0f59..92e8687f3ffde 100644 --- a/components/gorgias/sources/ticket-updated/ticket-updated.mjs +++ b/components/gorgias/sources/ticket-updated/ticket-updated.mjs @@ -13,6 +13,10 @@ export default { getEventType() { return eventTypes.TICKET_UPDATED; }, + async processHistoricalEvent(event) { + const ticket = await this.retrieveTicket(event.object_id); + this.emitEvent(ticket); + }, async processEvent(event) { this.emitEvent(event.ticket); }, From 67d30c91c1ee7615ea0a85cd579918e3400dfe21 Mon Sep 17 00:00:00 2001 From: Andrew Chuang Date: Wed, 29 Jun 2022 07:29:03 -0300 Subject: [PATCH 10/11] bump minor --- components/gorgias/sources/ticket-created/ticket-created.mjs | 2 +- .../sources/ticket-message-created/ticket-message-created.mjs | 2 +- components/gorgias/sources/ticket-updated/ticket-updated.mjs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/components/gorgias/sources/ticket-created/ticket-created.mjs b/components/gorgias/sources/ticket-created/ticket-created.mjs index 2040f942beef2..d6eee55a18c47 100644 --- a/components/gorgias/sources/ticket-created/ticket-created.mjs +++ b/components/gorgias/sources/ticket-created/ticket-created.mjs @@ -6,7 +6,7 @@ export default { key: "gorgias-ticket-created", name: "New Ticket", description: "Emit new event when a ticket is created. [See the docs](https://developers.gorgias.com/reference/the-event-object)", - version: "0.0.2", + version: "0.1.0", type: "source", methods: { ...base.methods, diff --git a/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs b/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs index 1c3ceacaccce5..79587b008e188 100644 --- a/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs +++ b/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs @@ -6,7 +6,7 @@ export default { key: "gorgias-ticket-messaged-created", name: "New Ticket Message", description: "Emit new event when a ticket message is created. [See the docs](https://developers.gorgias.com/reference/the-event-object)", - version: "0.0.2", + version: "0.1.0", type: "source", methods: { ...base.methods, diff --git a/components/gorgias/sources/ticket-updated/ticket-updated.mjs b/components/gorgias/sources/ticket-updated/ticket-updated.mjs index 92e8687f3ffde..cb3b48044e9a9 100644 --- a/components/gorgias/sources/ticket-updated/ticket-updated.mjs +++ b/components/gorgias/sources/ticket-updated/ticket-updated.mjs @@ -6,7 +6,7 @@ export default { key: "gorgias-ticket-updated", name: "New Updated Ticket", description: "Emit new event when a ticket is updated. [See the docs](https://developers.gorgias.com/reference/the-event-object)", - version: "0.0.2", + version: "0.1.0", type: "source", methods: { ...base.methods, From 9fead1d6fd3316c3e4c1fadab093a827da6874af Mon Sep 17 00:00:00 2001 From: Andrew Chuang Date: Tue, 12 Jul 2022 15:15:47 -0300 Subject: [PATCH 11/11] fix emit ticket message event --- .../sources/ticket-message-created/ticket-message-created.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs b/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs index 79587b008e188..61107035b3b23 100644 --- a/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs +++ b/components/gorgias/sources/ticket-message-created/ticket-message-created.mjs @@ -14,8 +14,8 @@ export default { return eventTypes.TICKET_MESSAGE_CREATED; }, async processHistoricalEvent(event) { - const ticketMessage = await this.retrieveTicketMessage(event.object_id); - this.emitEvent(ticketMessage); + // event doesn't contain ticket id to fetch message + this.emitEvent(event); }, async processEvent(event) { this.emitEvent(event.message);