From 5db62679fa521e2dbd8e5bd0650577c3739c8264 Mon Sep 17 00:00:00 2001 From: Mohammed Zaher <66143194+mohammedzaher@users.noreply.github.com> Date: Tue, 7 Nov 2023 14:52:55 +0200 Subject: [PATCH] feat(removebg): add remove-bg integration (#1406) * feat(remove-bg): add remove-bg integration * feat(removebg): update name and icon * docs(removebg): update name and icon * docs: add remove.bg in available apps * docs(removebg): correct path --------- Co-authored-by: Ali BARIN --- .../src/apps/removebg/assets/favicon.svg | 1 + .../backend/src/apps/removebg/auth/index.ts | 33 +++++++++++++++++++ .../apps/removebg/auth/is-still-verified.ts | 9 +++++ .../apps/removebg/auth/verify-credentials.ts | 12 +++++++ .../apps/removebg/common/add-auth-header.ts | 11 +++++++ packages/backend/src/apps/removebg/index.d.ts | 0 packages/backend/src/apps/removebg/index.ts | 16 +++++++++ packages/docs/pages/.vitepress/config.js | 6 ++++ .../docs/pages/apps/removebg/connection.md | 11 +++++++ packages/docs/pages/guide/available-apps.md | 1 + .../docs/pages/public/favicons/removebg.svg | 1 + 11 files changed, 101 insertions(+) create mode 100644 packages/backend/src/apps/removebg/assets/favicon.svg create mode 100644 packages/backend/src/apps/removebg/auth/index.ts create mode 100644 packages/backend/src/apps/removebg/auth/is-still-verified.ts create mode 100644 packages/backend/src/apps/removebg/auth/verify-credentials.ts create mode 100644 packages/backend/src/apps/removebg/common/add-auth-header.ts create mode 100644 packages/backend/src/apps/removebg/index.d.ts create mode 100644 packages/backend/src/apps/removebg/index.ts create mode 100644 packages/docs/pages/apps/removebg/connection.md create mode 100644 packages/docs/pages/public/favicons/removebg.svg diff --git a/packages/backend/src/apps/removebg/assets/favicon.svg b/packages/backend/src/apps/removebg/assets/favicon.svg new file mode 100644 index 00000000..80197555 --- /dev/null +++ b/packages/backend/src/apps/removebg/assets/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/backend/src/apps/removebg/auth/index.ts b/packages/backend/src/apps/removebg/auth/index.ts new file mode 100644 index 00000000..91afb0e5 --- /dev/null +++ b/packages/backend/src/apps/removebg/auth/index.ts @@ -0,0 +1,33 @@ +import verifyCredentials from './verify-credentials'; +import isStillVerified from './is-still-verified'; + +export default { + fields: [ + { + key: 'screenName', + label: 'Screen Name', + type: 'string' as const, + required: true, + readOnly: false, + value: null, + placeholder: null, + description: + 'Screen name of your connection to be used on Automatisch UI.', + clickToCopy: false, + }, + { + key: 'apiKey', + label: 'API Key', + type: 'string' as const, + required: true, + readOnly: false, + value: null, + placeholder: null, + description: 'API key of the remove.bg API service.', + clickToCopy: false, + }, + ], + + verifyCredentials, + isStillVerified, +}; diff --git a/packages/backend/src/apps/removebg/auth/is-still-verified.ts b/packages/backend/src/apps/removebg/auth/is-still-verified.ts new file mode 100644 index 00000000..66bb963e --- /dev/null +++ b/packages/backend/src/apps/removebg/auth/is-still-verified.ts @@ -0,0 +1,9 @@ +import { IGlobalVariable } from '@automatisch/types'; +import verifyCredentials from './verify-credentials'; + +const isStillVerified = async ($: IGlobalVariable) => { + await verifyCredentials($); + return true; +}; + +export default isStillVerified; diff --git a/packages/backend/src/apps/removebg/auth/verify-credentials.ts b/packages/backend/src/apps/removebg/auth/verify-credentials.ts new file mode 100644 index 00000000..7b9451d7 --- /dev/null +++ b/packages/backend/src/apps/removebg/auth/verify-credentials.ts @@ -0,0 +1,12 @@ +import { IGlobalVariable } from '@automatisch/types'; + +const verifyCredentials = async ($: IGlobalVariable) => { + await $.http.get('/account'); + + await $.auth.set({ + screenName: $.auth.data.screenName, + apiKey: $.auth.data.apiKey, + }); +}; + +export default verifyCredentials; diff --git a/packages/backend/src/apps/removebg/common/add-auth-header.ts b/packages/backend/src/apps/removebg/common/add-auth-header.ts new file mode 100644 index 00000000..0b59c5c5 --- /dev/null +++ b/packages/backend/src/apps/removebg/common/add-auth-header.ts @@ -0,0 +1,11 @@ +import { TBeforeRequest } from '@automatisch/types'; + +const addAuthHeader: TBeforeRequest = ($, requestConfig) => { + if ($.auth.data?.apiKey) { + requestConfig.headers['X-API-Key'] = `${$.auth.data.apiKey}`; + } + + return requestConfig; +}; + +export default addAuthHeader; \ No newline at end of file diff --git a/packages/backend/src/apps/removebg/index.d.ts b/packages/backend/src/apps/removebg/index.d.ts new file mode 100644 index 00000000..e69de29b diff --git a/packages/backend/src/apps/removebg/index.ts b/packages/backend/src/apps/removebg/index.ts new file mode 100644 index 00000000..c9827811 --- /dev/null +++ b/packages/backend/src/apps/removebg/index.ts @@ -0,0 +1,16 @@ +import defineApp from '../../helpers/define-app'; +import addAuthHeader from './common/add-auth-header'; +import auth from './auth'; + +export default defineApp({ + name: 'Remove.bg', + key: 'removebg', + iconUrl: '{BASE_URL}/apps/removebg/assets/favicon.svg', + authDocUrl: 'https://automatisch.io/docs/apps/removebg/connection', + supportsConnections: true, + baseUrl: 'https://www.remove.bg', + apiBaseUrl: 'https://api.remove.bg/v1.0', + primaryColor: '55636c', + beforeRequest: [addAuthHeader], + auth, +}); diff --git a/packages/docs/pages/.vitepress/config.js b/packages/docs/pages/.vitepress/config.js index 94a0394e..f5f0629e 100644 --- a/packages/docs/pages/.vitepress/config.js +++ b/packages/docs/pages/.vitepress/config.js @@ -286,6 +286,12 @@ export default defineConfig({ { text: 'Connection', link: '/apps/pushover/connection' }, ], }, + { + text: 'Remove.bg', + collapsible: true, + collapsed: true, + items: [{ text: 'Connection', link: '/apps/removepg/connection' }], + }, { text: 'RSS', collapsible: true, diff --git a/packages/docs/pages/apps/removebg/connection.md b/packages/docs/pages/apps/removebg/connection.md new file mode 100644 index 00000000..d3ff1ec0 --- /dev/null +++ b/packages/docs/pages/apps/removebg/connection.md @@ -0,0 +1,11 @@ +# Remove.bg + +:::info +This page explains the steps you need to follow to set up the remove.bg +connection in Automatisch. If any of the steps are outdated, please let us know! +::: + +1. Login to your remove.bg account: [https://www.remove.bg/](https://www.remove.bg/). +2. Create a new api key: [https://www.remove.bg/dashboard#api-key](https://www.remove.bg/dashboard#api-key). +3. Copy the `API Key` from the page to the `API Key` field on Automatisch. +4. Now, you can start using the remove.bg connection with Automatisch. diff --git a/packages/docs/pages/guide/available-apps.md b/packages/docs/pages/guide/available-apps.md index b5cf61e7..cc6c8682 100644 --- a/packages/docs/pages/guide/available-apps.md +++ b/packages/docs/pages/guide/available-apps.md @@ -29,6 +29,7 @@ The following integrations are currently supported by Automatisch. - [Placetel](/apps/placetel/triggers) - [PostgreSQL](/apps/postgresql/actions) - [Pushover](/apps/pushover/actions) +- [Remove.bg](/apps/removebg/connection) - [RSS](/apps/rss/triggers) - [Salesforce](/apps/salesforce/triggers) - [Scheduler](/apps/scheduler/triggers) diff --git a/packages/docs/pages/public/favicons/removebg.svg b/packages/docs/pages/public/favicons/removebg.svg new file mode 100644 index 00000000..80197555 --- /dev/null +++ b/packages/docs/pages/public/favicons/removebg.svg @@ -0,0 +1 @@ + \ No newline at end of file