From 4ca82ee733901e23c7e2e00b5579601db733c1bf Mon Sep 17 00:00:00 2001
From: Mr Khachaturov <105451445+mrkhachaturov@users.noreply.github.com>
Date: Sun, 24 Mar 2024 20:37:55 +0300
Subject: [PATCH] Extend Confluence Document Loader to Support Server/Data
Center with PAT (#1998)
* Extend Confluence Document Loader to Support Server/Data Center with PAT
- Update authentication to use Personal Access Token (PAT)
- Expand compatibility to include both Confluence Cloud and Server/Data Center
* Update ConfluenceServerDCApi.credential.ts
* use the same confluence loader with different connection logic
* use the same confluence loader with different connection logic
* Apply Prettier formatting
---
...al.ts => ConfluenceCloudApi.credential.ts} | 8 +++---
.../ConfluenceServerDCApi.credential.ts | 27 +++++++++++++++++++
.../documentloaders/Confluence/Confluence.ts | 16 ++++++++---
3 files changed, 43 insertions(+), 8 deletions(-)
rename packages/components/credentials/{ConfluenceApi.credential.ts => ConfluenceCloudApi.credential.ts} (83%)
create mode 100644 packages/components/credentials/ConfluenceServerDCApi.credential.ts
diff --git a/packages/components/credentials/ConfluenceApi.credential.ts b/packages/components/credentials/ConfluenceCloudApi.credential.ts
similarity index 83%
rename from packages/components/credentials/ConfluenceApi.credential.ts
rename to packages/components/credentials/ConfluenceCloudApi.credential.ts
index 656ecf6bc..8dcba4929 100644
--- a/packages/components/credentials/ConfluenceApi.credential.ts
+++ b/packages/components/credentials/ConfluenceCloudApi.credential.ts
@@ -1,6 +1,6 @@
import { INodeParams, INodeCredential } from '../src/Interface'
-class ConfluenceApi implements INodeCredential {
+class ConfluenceCloudApi implements INodeCredential {
label: string
name: string
version: number
@@ -8,8 +8,8 @@ class ConfluenceApi implements INodeCredential {
inputs: INodeParams[]
constructor() {
- this.label = 'Confluence API'
- this.name = 'confluenceApi'
+ this.label = 'Confluence Cloud API'
+ this.name = 'confluenceCloudApi'
this.version = 1.0
this.description =
'Refer to official guide on how to get Access Token or API Token on Confluence'
@@ -30,4 +30,4 @@ class ConfluenceApi implements INodeCredential {
}
}
-module.exports = { credClass: ConfluenceApi }
+module.exports = { credClass: ConfluenceCloudApi }
diff --git a/packages/components/credentials/ConfluenceServerDCApi.credential.ts b/packages/components/credentials/ConfluenceServerDCApi.credential.ts
new file mode 100644
index 000000000..668b1e447
--- /dev/null
+++ b/packages/components/credentials/ConfluenceServerDCApi.credential.ts
@@ -0,0 +1,27 @@
+import { INodeParams, INodeCredential } from '../src/Interface'
+
+class ConfluenceServerDCApi implements INodeCredential {
+ label: string
+ name: string
+ version: number
+ description: string
+ inputs: INodeParams[]
+
+ constructor() {
+ this.label = 'Confluence Server/Data Center API'
+ this.name = 'confluenceServerDCApi'
+ this.version = 1.0
+ this.description =
+ 'Refer to official guide on how to get Personal Access Token on Confluence'
+ this.inputs = [
+ {
+ label: 'Personal Access Token',
+ name: 'personalAccessToken',
+ type: 'password',
+ placeholder: ''
+ }
+ ]
+ }
+}
+
+module.exports = { credClass: ConfluenceServerDCApi }
diff --git a/packages/components/nodes/documentloaders/Confluence/Confluence.ts b/packages/components/nodes/documentloaders/Confluence/Confluence.ts
index bccda24c1..3e15048f5 100644
--- a/packages/components/nodes/documentloaders/Confluence/Confluence.ts
+++ b/packages/components/nodes/documentloaders/Confluence/Confluence.ts
@@ -28,7 +28,7 @@ class Confluence_DocumentLoaders implements INode {
label: 'Connect Credential',
name: 'credential',
type: 'credential',
- credentialNames: ['confluenceApi']
+ credentialNames: ['confluenceCloudApi', 'confluenceServerDCApi']
}
this.inputs = [
{
@@ -77,16 +77,24 @@ class Confluence_DocumentLoaders implements INode {
const credentialData = await getCredentialData(nodeData.credential ?? '', options)
const accessToken = getCredentialParam('accessToken', credentialData, nodeData)
+ const personalAccessToken = getCredentialParam('personalAccessToken', credentialData, nodeData)
const username = getCredentialParam('username', credentialData, nodeData)
- const confluenceOptions: ConfluencePagesLoaderParams = {
- username,
- accessToken,
+ let confluenceOptions: ConfluencePagesLoaderParams = {
baseUrl,
spaceKey,
limit
}
+ if (accessToken) {
+ // Confluence Cloud credentials
+ confluenceOptions.username = username
+ confluenceOptions.accessToken = accessToken
+ } else if (personalAccessToken) {
+ // Confluence Server/Data Center credentials
+ confluenceOptions.personalAccessToken = personalAccessToken
+ }
+
const loader = new ConfluencePagesLoader(confluenceOptions)
let docs = []