From 2f64a074c6a4312f3a34ffe4d5f8600bbcdea69b Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Thu, 2 Feb 2023 22:30:07 +0000 Subject: [PATCH] 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, +});