From 2f64a074c6a4312f3a34ffe4d5f8600bbcdea69b Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Thu, 2 Feb 2023 22:30:07 +0000 Subject: [PATCH 1/2] feat(http-request): introduce custom request action --- .../actions/custom-request/index.ts | 62 +++++++++++++++++++ .../src/apps/http-request/actions/index.ts | 3 + .../src/apps/http-request/assets/favicon.svg | 1 + .../backend/src/apps/http-request/index.d.ts | 0 .../backend/src/apps/http-request/index.ts | 14 +++++ 5 files changed, 80 insertions(+) create mode 100644 packages/backend/src/apps/http-request/actions/custom-request/index.ts create mode 100644 packages/backend/src/apps/http-request/actions/index.ts create mode 100644 packages/backend/src/apps/http-request/assets/favicon.svg create mode 100644 packages/backend/src/apps/http-request/index.d.ts create mode 100644 packages/backend/src/apps/http-request/index.ts diff --git a/packages/backend/src/apps/http-request/actions/custom-request/index.ts b/packages/backend/src/apps/http-request/actions/custom-request/index.ts new file mode 100644 index 00000000..a7a88d76 --- /dev/null +++ b/packages/backend/src/apps/http-request/actions/custom-request/index.ts @@ -0,0 +1,62 @@ +import defineAction from '../../../../helpers/define-action'; + +type TMethod = 'GET' | 'POST' | 'PATCH' | 'PUT' | 'DELETE'; + +export default defineAction({ + name: 'Custom Request', + key: 'customRequest', + description: 'Makes a custom HTTP request by providing raw details.', + arguments: [ + { + label: 'Method', + key: 'method', + type: 'dropdown' as const, + required: true, + description: + `The HTTP method we'll use to perform the request.`, + value: 'GET', + options: [ + { label: 'DELETE', value: 'DELETE' }, + { label: 'GET', value: 'GET' }, + { label: 'PATCH', value: 'PATCH' }, + { label: 'POST', value: 'POST' }, + { label: 'PUT', value: 'PUT' }, + ] + }, + { + label: 'URL', + key: 'url', + type: 'string' as const, + required: true, + description: 'Any URL with a querystring will be re-encoded properly.', + variables: true, + }, + { + label: 'Data', + key: 'data', + type: 'string' as const, + required: true, + description: 'Place raw JSON data here.', + variables: true, + }, + ], + + async run($) { + const method = $.step.parameters.method as TMethod; + const data = $.step.parameters.data as string; + const url = $.step.parameters.url as string; + + const response = await $.http.request( + { + url, + method, + data, + headers: { + 'Content-Type': 'application/json' + } + } + ); + + $.setActionItem({ raw: response.data }); + }, +}); diff --git a/packages/backend/src/apps/http-request/actions/index.ts b/packages/backend/src/apps/http-request/actions/index.ts new file mode 100644 index 00000000..2bfac8fc --- /dev/null +++ b/packages/backend/src/apps/http-request/actions/index.ts @@ -0,0 +1,3 @@ +import customRequest from './custom-request'; + +export default [customRequest]; diff --git a/packages/backend/src/apps/http-request/assets/favicon.svg b/packages/backend/src/apps/http-request/assets/favicon.svg new file mode 100644 index 00000000..87c7dae5 --- /dev/null +++ b/packages/backend/src/apps/http-request/assets/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/backend/src/apps/http-request/index.d.ts b/packages/backend/src/apps/http-request/index.d.ts new file mode 100644 index 00000000..e69de29b diff --git a/packages/backend/src/apps/http-request/index.ts b/packages/backend/src/apps/http-request/index.ts new file mode 100644 index 00000000..9b6cc169 --- /dev/null +++ b/packages/backend/src/apps/http-request/index.ts @@ -0,0 +1,14 @@ +import defineApp from '../../helpers/define-app'; +import actions from './actions'; + +export default defineApp({ + name: 'HTTP Request', + key: 'http-request', + iconUrl: '{BASE_URL}/apps/http-request/assets/favicon.svg', + authDocUrl: 'https://automatisch.io/docs/apps/http-request/connection', + supportsConnections: false, + baseUrl: '', + apiBaseUrl: '', + primaryColor: '000000', + actions, +}); From 08ac3fb984801260fab3e31a531d8ae0bed682b2 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Thu, 2 Feb 2023 22:34:42 +0000 Subject: [PATCH 2/2] docs(http-request): add custom request action --- packages/docs/pages/.vitepress/config.js | 9 +++++++++ packages/docs/pages/apps/http-request/actions.md | 12 ++++++++++++ packages/docs/pages/apps/http-request/connection.md | 3 +++ packages/docs/pages/guide/available-apps.md | 3 ++- packages/docs/pages/public/favicons/http-request.svg | 1 + 5 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 packages/docs/pages/apps/http-request/actions.md create mode 100644 packages/docs/pages/apps/http-request/connection.md create mode 100644 packages/docs/pages/public/favicons/http-request.svg diff --git a/packages/docs/pages/.vitepress/config.js b/packages/docs/pages/.vitepress/config.js index 94b9d11f..3a16f115 100644 --- a/packages/docs/pages/.vitepress/config.js +++ b/packages/docs/pages/.vitepress/config.js @@ -78,6 +78,15 @@ export default defineConfig({ { text: 'Connection', link: '/apps/github/connection' }, ], }, + { + text: 'HTTP Request', + collapsible: true, + collapsed: true, + items: [ + { text: 'Actions', link: '/apps/http-request/actions' }, + { text: 'Connection', link: '/apps/http-request/connection' }, + ], + }, { text: 'Ntfy', collapsible: true, diff --git a/packages/docs/pages/apps/http-request/actions.md b/packages/docs/pages/apps/http-request/actions.md new file mode 100644 index 00000000..4ecd45aa --- /dev/null +++ b/packages/docs/pages/apps/http-request/actions.md @@ -0,0 +1,12 @@ +--- +favicon: /favicons/http-request.svg +items: + - name: Custom Request + desc: Makes a custom HTTP request by providing raw details. +--- + + + + diff --git a/packages/docs/pages/apps/http-request/connection.md b/packages/docs/pages/apps/http-request/connection.md new file mode 100644 index 00000000..53c9974a --- /dev/null +++ b/packages/docs/pages/apps/http-request/connection.md @@ -0,0 +1,3 @@ +# HTTP Request + +HTTP Request is a built-in app shipped with Automatisch, and it doesn't need to talk with any other external service to run. So there are no additional steps to use the HTTP Request app. diff --git a/packages/docs/pages/guide/available-apps.md b/packages/docs/pages/guide/available-apps.md index 5c96ad79..5874ca0c 100644 --- a/packages/docs/pages/guide/available-apps.md +++ b/packages/docs/pages/guide/available-apps.md @@ -11,9 +11,10 @@ Following integrations are currently supported by Automatisch. - [Discord](/apps/discord/actions) - [Flickr](/apps/flickr/triggers) - [Github](/apps/github/triggers) -- [RSS](/apps/rss/triggers) +- [HTTP Request](/apps/http-request/actions) - [Ntfy](/apps/ntfy/actions) - [OpenAI](/apps/openai/actions) +- [RSS](/apps/rss/triggers) - [Salesforce](/apps/salesforce/triggers) - [Scheduler](/apps/scheduler/triggers) - [Slack](/apps/slack/actions) diff --git a/packages/docs/pages/public/favicons/http-request.svg b/packages/docs/pages/public/favicons/http-request.svg new file mode 100644 index 00000000..87c7dae5 --- /dev/null +++ b/packages/docs/pages/public/favicons/http-request.svg @@ -0,0 +1 @@ + \ No newline at end of file