From 5738a097713206a541872de919845bb76125e86e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C4=B1dvan=20Akca?= Date: Fri, 10 Nov 2023 16:13:37 +0300 Subject: [PATCH] feat(reddit): add new posts matching search trigger --- packages/backend/src/apps/reddit/index.ts | 2 + .../backend/src/apps/reddit/triggers/index.ts | 3 ++ .../new-posts-matching-search/index.ts | 48 +++++++++++++++++++ packages/docs/pages/.vitepress/config.js | 5 +- packages/docs/pages/apps/reddit/triggers.md | 12 +++++ packages/docs/pages/guide/available-apps.md | 1 + 6 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 packages/backend/src/apps/reddit/triggers/index.ts create mode 100644 packages/backend/src/apps/reddit/triggers/new-posts-matching-search/index.ts create mode 100644 packages/docs/pages/apps/reddit/triggers.md diff --git a/packages/backend/src/apps/reddit/index.ts b/packages/backend/src/apps/reddit/index.ts index df965e87..f7ab3258 100644 --- a/packages/backend/src/apps/reddit/index.ts +++ b/packages/backend/src/apps/reddit/index.ts @@ -1,6 +1,7 @@ import defineApp from '../../helpers/define-app'; import addAuthHeader from './common/add-auth-header'; import auth from './auth'; +import triggers from './triggers'; export default defineApp({ name: 'Reddit', @@ -13,4 +14,5 @@ export default defineApp({ supportsConnections: true, beforeRequest: [addAuthHeader], auth, + triggers, }); diff --git a/packages/backend/src/apps/reddit/triggers/index.ts b/packages/backend/src/apps/reddit/triggers/index.ts new file mode 100644 index 00000000..b8846874 --- /dev/null +++ b/packages/backend/src/apps/reddit/triggers/index.ts @@ -0,0 +1,3 @@ +import newPostsMatchingSearch from './new-posts-matching-search'; + +export default [newPostsMatchingSearch]; diff --git a/packages/backend/src/apps/reddit/triggers/new-posts-matching-search/index.ts b/packages/backend/src/apps/reddit/triggers/new-posts-matching-search/index.ts new file mode 100644 index 00000000..f22e3a57 --- /dev/null +++ b/packages/backend/src/apps/reddit/triggers/new-posts-matching-search/index.ts @@ -0,0 +1,48 @@ +import defineTrigger from '../../../../helpers/define-trigger'; + +export default defineTrigger({ + name: 'New posts matching search', + key: 'newPostsMatchingSearch', + pollInterval: 15, + description: 'Triggers when a search string matches a new post.', + arguments: [ + { + label: 'Search Query', + key: 'searchQuery', + type: 'string' as const, + required: true, + description: + 'The term or expression to look for, restricted to 512 characters. If your query contains periods (e.g., automatisch.io), ensure it is enclosed in quotes ("automatisch.io").', + variables: true, + }, + ], + + async run($) { + const { searchQuery } = $.step.parameters; + const params = { + q: searchQuery, + type: 'link', + sort: 'new', + limit: 100, + after: undefined as unknown as string, + }; + + do { + const { data } = await $.http.get('/search', { + params, + }); + params.after = data.data.after; + + if (data.data.children?.length) { + for (const item of data.data.children) { + $.pushTriggerItem({ + raw: item, + meta: { + internalId: item.data.id, + }, + }); + } + } + } while (params.after); + }, +}); diff --git a/packages/docs/pages/.vitepress/config.js b/packages/docs/pages/.vitepress/config.js index a497e096..dcd7ea5e 100644 --- a/packages/docs/pages/.vitepress/config.js +++ b/packages/docs/pages/.vitepress/config.js @@ -293,7 +293,10 @@ export default defineConfig({ text: 'Reddit', collapsible: true, collapsed: true, - items: [{ text: 'Connection', link: '/apps/reddit/connection' }], + items: [ + { text: 'Triggers', link: '/apps/reddit/triggers' }, + { text: 'Connection', link: '/apps/reddit/connection' }, + ], }, { text: 'Remove.bg', diff --git a/packages/docs/pages/apps/reddit/triggers.md b/packages/docs/pages/apps/reddit/triggers.md new file mode 100644 index 00000000..3fed70fa --- /dev/null +++ b/packages/docs/pages/apps/reddit/triggers.md @@ -0,0 +1,12 @@ +--- +favicon: /favicons/reddit.svg +items: + - name: New posts matching search + desc: Triggers when a search string matches a new post. +--- + + + + diff --git a/packages/docs/pages/guide/available-apps.md b/packages/docs/pages/guide/available-apps.md index f5ec1a96..1e32d44b 100644 --- a/packages/docs/pages/guide/available-apps.md +++ b/packages/docs/pages/guide/available-apps.md @@ -30,6 +30,7 @@ The following integrations are currently supported by Automatisch. - [Placetel](/apps/placetel/triggers) - [PostgreSQL](/apps/postgresql/actions) - [Pushover](/apps/pushover/actions) +- [Reddit](/apps/reddit/triggers) - [Remove.bg](/apps/removebg/connection) - [RSS](/apps/rss/triggers) - [Salesforce](/apps/salesforce/triggers)