diff --git a/packages/backend/src/apps/reddit/actions/create-link-post/index.ts b/packages/backend/src/apps/reddit/actions/create-link-post/index.ts new file mode 100644 index 00000000..b69af808 --- /dev/null +++ b/packages/backend/src/apps/reddit/actions/create-link-post/index.ts @@ -0,0 +1,53 @@ +import defineAction from '../../../../helpers/define-action'; +import { URLSearchParams } from 'url'; + +export default defineAction({ + name: 'Create link post', + key: 'createLinkPost', + description: 'Create a new link post within a subreddit.', + arguments: [ + { + label: 'Title', + key: 'title', + type: 'string' as const, + required: true, + description: + 'Heading for the recent post. Limited to 300 characters or less.', + variables: true, + }, + { + label: 'Subreddit', + key: 'subreddit', + type: 'string' as const, + required: true, + description: 'The subreddit for posting. Note: Exclude /r/.', + variables: true, + }, + { + label: 'Url', + key: 'url', + type: 'string' as const, + required: true, + description: '', + variables: true, + }, + ], + + async run($) { + const { title, subreddit, url } = $.step.parameters; + + const params = new URLSearchParams({ + kind: 'link', + api_type: 'json', + title: title as string, + sr: subreddit as string, + url: url as string, + }); + + const { data } = await $.http.post('/api/submit', params.toString()); + + $.setActionItem({ + raw: data, + }); + }, +}); diff --git a/packages/backend/src/apps/reddit/actions/index.ts b/packages/backend/src/apps/reddit/actions/index.ts new file mode 100644 index 00000000..832217db --- /dev/null +++ b/packages/backend/src/apps/reddit/actions/index.ts @@ -0,0 +1,3 @@ +import createLinkPost from './create-link-post'; + +export default [createLinkPost]; diff --git a/packages/backend/src/apps/reddit/index.ts b/packages/backend/src/apps/reddit/index.ts index f7ab3258..f2e43446 100644 --- a/packages/backend/src/apps/reddit/index.ts +++ b/packages/backend/src/apps/reddit/index.ts @@ -2,6 +2,7 @@ import defineApp from '../../helpers/define-app'; import addAuthHeader from './common/add-auth-header'; import auth from './auth'; import triggers from './triggers'; +import actions from './actions'; export default defineApp({ name: 'Reddit', @@ -15,4 +16,5 @@ export default defineApp({ beforeRequest: [addAuthHeader], auth, triggers, + actions, }); diff --git a/packages/docs/pages/.vitepress/config.js b/packages/docs/pages/.vitepress/config.js index dcd7ea5e..c085c31e 100644 --- a/packages/docs/pages/.vitepress/config.js +++ b/packages/docs/pages/.vitepress/config.js @@ -295,6 +295,7 @@ export default defineConfig({ collapsed: true, items: [ { text: 'Triggers', link: '/apps/reddit/triggers' }, + { text: 'Actions', link: '/apps/reddit/actions' }, { text: 'Connection', link: '/apps/reddit/connection' }, ], }, diff --git a/packages/docs/pages/apps/reddit/actions.md b/packages/docs/pages/apps/reddit/actions.md new file mode 100644 index 00000000..757bda6f --- /dev/null +++ b/packages/docs/pages/apps/reddit/actions.md @@ -0,0 +1,12 @@ +--- +favicon: /favicons/reddit.svg +items: + - name: Create link post + desc: Create a new link post within a subreddit. +--- + + + +