From 2afcfbb4bc214efb7d6c02c9c86d30b2cae3e6d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C4=B1dvan=20Akca?= <43352493+ridvanakca@users.noreply.github.com> Date: Tue, 7 Nov 2023 14:55:35 +0300 Subject: [PATCH] feat(ghost): add new post published trigger (#1403) --- packages/backend/src/apps/ghost/index.ts | 2 + .../backend/src/apps/ghost/triggers/index.ts | 3 + .../triggers/new-post-published/index.ts | 55 +++++++++++++++++++ packages/docs/pages/.vitepress/config.js | 5 +- packages/docs/pages/apps/ghost/triggers.md | 12 ++++ packages/docs/pages/guide/available-apps.md | 1 + 6 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 packages/backend/src/apps/ghost/triggers/index.ts create mode 100644 packages/backend/src/apps/ghost/triggers/new-post-published/index.ts create mode 100644 packages/docs/pages/apps/ghost/triggers.md diff --git a/packages/backend/src/apps/ghost/index.ts b/packages/backend/src/apps/ghost/index.ts index b2e0de7d..12a1a07b 100644 --- a/packages/backend/src/apps/ghost/index.ts +++ b/packages/backend/src/apps/ghost/index.ts @@ -2,6 +2,7 @@ import defineApp from '../../helpers/define-app'; import addAuthHeader from './common/add-auth-header'; import setBaseUrl from './common/set-base-url'; import auth from './auth'; +import triggers from './triggers'; export default defineApp({ name: 'Ghost', @@ -14,4 +15,5 @@ export default defineApp({ supportsConnections: true, beforeRequest: [setBaseUrl, addAuthHeader], auth, + triggers, }); diff --git a/packages/backend/src/apps/ghost/triggers/index.ts b/packages/backend/src/apps/ghost/triggers/index.ts new file mode 100644 index 00000000..776ed504 --- /dev/null +++ b/packages/backend/src/apps/ghost/triggers/index.ts @@ -0,0 +1,3 @@ +import newPostPublished from './new-post-published'; + +export default [newPostPublished]; diff --git a/packages/backend/src/apps/ghost/triggers/new-post-published/index.ts b/packages/backend/src/apps/ghost/triggers/new-post-published/index.ts new file mode 100644 index 00000000..cba788b2 --- /dev/null +++ b/packages/backend/src/apps/ghost/triggers/new-post-published/index.ts @@ -0,0 +1,55 @@ +import Crypto from 'crypto'; +import isEmpty from 'lodash/isEmpty'; +import defineTrigger from '../../../../helpers/define-trigger'; + +export default defineTrigger({ + name: 'New post published', + key: 'newPostPublished', + type: 'webhook', + description: 'Triggers when a new post is published.', + + async run($) { + const dataItem = { + raw: $.request.body, + meta: { + internalId: Crypto.randomUUID(), + }, + }; + + $.pushTriggerItem(dataItem); + }, + + async testRun($) { + const lastExecutionStep = await $.getLastExecutionStep(); + + if (!isEmpty(lastExecutionStep?.dataOut)) { + $.pushTriggerItem({ + raw: lastExecutionStep.dataOut, + meta: { + internalId: '', + }, + }); + } + }, + + async registerHook($) { + const payload = { + webhooks: [ + { + event: 'post.published', + target_url: $.webhookUrl, + name: `Flow ID: ${$.flow.id}`, + }, + ], + }; + + const response = await $.http.post('/admin/webhooks/', payload); + const id = response.data.webhooks[0].id; + + await $.flow.setRemoteWebhookId(id); + }, + + async unregisterHook($) { + await $.http.delete(`/admin/webhooks/${$.flow.remoteWebhookId}/`); + }, +}); diff --git a/packages/docs/pages/.vitepress/config.js b/packages/docs/pages/.vitepress/config.js index 74482c54..f28b037d 100644 --- a/packages/docs/pages/.vitepress/config.js +++ b/packages/docs/pages/.vitepress/config.js @@ -99,7 +99,10 @@ export default defineConfig({ text: 'Ghost', collapsible: true, collapsed: true, - items: [{ text: 'Connection', link: '/apps/ghost/connection' }], + items: [ + { text: 'Triggers', link: '/apps/ghost/triggers' }, + { text: 'Connection', link: '/apps/ghost/connection' }, + ], }, { text: 'GitHub', diff --git a/packages/docs/pages/apps/ghost/triggers.md b/packages/docs/pages/apps/ghost/triggers.md new file mode 100644 index 00000000..dbb88b3b --- /dev/null +++ b/packages/docs/pages/apps/ghost/triggers.md @@ -0,0 +1,12 @@ +--- +favicon: /favicons/ghost.svg +items: + - name: New post published + desc: Triggers when a new post is published. +--- + + + + diff --git a/packages/docs/pages/guide/available-apps.md b/packages/docs/pages/guide/available-apps.md index e2b6b154..b5cf61e7 100644 --- a/packages/docs/pages/guide/available-apps.md +++ b/packages/docs/pages/guide/available-apps.md @@ -9,6 +9,7 @@ The following integrations are currently supported by Automatisch. - [Filter](/apps/filter/actions) - [Flickr](/apps/flickr/triggers) - [Formatter](/apps/formatter/actions) +- [Ghost](/apps/ghost/triggers) - [GitHub](/apps/github/triggers) - [GitLab](/apps/gitlab/triggers) - [Google Calendar](/apps/google-calendar/triggers)