diff --git a/packages/backend/src/apps/pdf-monkey/assets/favicon.svg b/packages/backend/src/apps/pdf-monkey/assets/favicon.svg new file mode 100644 index 00000000..8466631d --- /dev/null +++ b/packages/backend/src/apps/pdf-monkey/assets/favicon.svg @@ -0,0 +1,1487 @@ + + + + diff --git a/packages/backend/src/apps/pdf-monkey/auth/index.js b/packages/backend/src/apps/pdf-monkey/auth/index.js new file mode 100644 index 00000000..e7391e7a --- /dev/null +++ b/packages/backend/src/apps/pdf-monkey/auth/index.js @@ -0,0 +1,21 @@ +import verifyCredentials from './verify-credentials.js'; +import isStillVerified from './is-still-verified.js'; + +export default { + fields: [ + { + key: 'apiKey', + label: 'API Key', + type: 'string', + required: true, + readOnly: false, + value: null, + placeholder: null, + description: 'PDFMonkey API secret key of your account.', + clickToCopy: false, + }, + ], + + verifyCredentials, + isStillVerified, +}; diff --git a/packages/backend/src/apps/pdf-monkey/auth/is-still-verified.js b/packages/backend/src/apps/pdf-monkey/auth/is-still-verified.js new file mode 100644 index 00000000..08962895 --- /dev/null +++ b/packages/backend/src/apps/pdf-monkey/auth/is-still-verified.js @@ -0,0 +1,8 @@ +import getCurrentUser from '../common/get-current-user.js'; + +const isStillVerified = async ($) => { + const currentUser = await getCurrentUser($); + return !!currentUser.id; +}; + +export default isStillVerified; diff --git a/packages/backend/src/apps/pdf-monkey/auth/verify-credentials.js b/packages/backend/src/apps/pdf-monkey/auth/verify-credentials.js new file mode 100644 index 00000000..59d2166b --- /dev/null +++ b/packages/backend/src/apps/pdf-monkey/auth/verify-credentials.js @@ -0,0 +1,15 @@ +import getCurrentUser from '../common/get-current-user.js'; + +const verifyCredentials = async ($) => { + const currentUser = await getCurrentUser($); + const screenName = [currentUser.desired_name, currentUser.email] + .filter(Boolean) + .join(' @ '); + + await $.auth.set({ + screenName, + apiKey: $.auth.data.apiKey, + }); +}; + +export default verifyCredentials; diff --git a/packages/backend/src/apps/pdf-monkey/common/add-auth-header.js b/packages/backend/src/apps/pdf-monkey/common/add-auth-header.js new file mode 100644 index 00000000..f9f5acba --- /dev/null +++ b/packages/backend/src/apps/pdf-monkey/common/add-auth-header.js @@ -0,0 +1,9 @@ +const addAuthHeader = ($, requestConfig) => { + if ($.auth.data?.apiKey) { + requestConfig.headers.Authorization = `Bearer ${$.auth.data.apiKey}`; + } + + return requestConfig; +}; + +export default addAuthHeader; diff --git a/packages/backend/src/apps/pdf-monkey/common/get-current-user.js b/packages/backend/src/apps/pdf-monkey/common/get-current-user.js new file mode 100644 index 00000000..c7e5801b --- /dev/null +++ b/packages/backend/src/apps/pdf-monkey/common/get-current-user.js @@ -0,0 +1,8 @@ +const getCurrentUser = async ($) => { + const response = await $.http.get('/v1/current_user'); + const currentUser = response.data.current_user; + + return currentUser; +}; + +export default getCurrentUser; diff --git a/packages/backend/src/apps/pdf-monkey/index.js b/packages/backend/src/apps/pdf-monkey/index.js new file mode 100644 index 00000000..56d40deb --- /dev/null +++ b/packages/backend/src/apps/pdf-monkey/index.js @@ -0,0 +1,16 @@ +import defineApp from '../../helpers/define-app.js'; +import addAuthHeader from './common/add-auth-header.js'; +import auth from './auth/index.js'; + +export default defineApp({ + name: 'PDFMonkey', + key: 'pdf-monkey', + iconUrl: '{BASE_URL}/apps/pdf-monkey/assets/favicon.svg', + authDocUrl: 'https://automatisch.io/docs/apps/pdf-monkey/connection', + supportsConnections: true, + baseUrl: 'https://pdfmonkey.io', + apiBaseUrl: 'https://api.pdfmonkey.io/api', + primaryColor: 'db2777', + beforeRequest: [addAuthHeader], + auth, +}); diff --git a/packages/docs/pages/.vitepress/config.js b/packages/docs/pages/.vitepress/config.js index 04d3fdcf..9143c85c 100644 --- a/packages/docs/pages/.vitepress/config.js +++ b/packages/docs/pages/.vitepress/config.js @@ -252,6 +252,12 @@ export default defineConfig({ { text: 'Connection', link: '/apps/openai/connection' }, ], }, + { + text: 'PDFMonkey', + collapsible: true, + collapsed: true, + items: [{ text: 'Connection', link: '/apps/pdf-monkey/connection' }], + }, { text: 'Pipedrive', collapsible: true, @@ -305,7 +311,7 @@ export default defineConfig({ collapsed: true, items: [ { text: 'Actions', link: '/apps/removebg/actions' }, - { text: 'Connection', link: '/apps/removebg/connection' } + { text: 'Connection', link: '/apps/removebg/connection' }, ], }, { diff --git a/packages/docs/pages/apps/pdf-monkey/connection.md b/packages/docs/pages/apps/pdf-monkey/connection.md new file mode 100644 index 00000000..9ae4406d --- /dev/null +++ b/packages/docs/pages/apps/pdf-monkey/connection.md @@ -0,0 +1,11 @@ +# PDFMonkey + +:::info +This page explains the steps you need to follow to set up the PDFMonkey +connection in Automatisch. If any of the steps are outdated, please let us know! +::: + +1. Login to your PDFMonkey account: [https://dashboard.pdfmonkey.io/login](https://dashboard.pdfmonkey.io/login). +2. Go to **My Account** section from your profile. +3. Copy `API SECRET KEY` from the page to the `API Key` field on Automatisch. +4. Now, you can start using the PDFMonkey connection with Automatisch. diff --git a/packages/docs/pages/public/favicons/pdf-monkey.svg b/packages/docs/pages/public/favicons/pdf-monkey.svg new file mode 100644 index 00000000..8466631d --- /dev/null +++ b/packages/docs/pages/public/favicons/pdf-monkey.svg @@ -0,0 +1,1487 @@ + + + +