From 3fc7fedab3ab096345f196f8207eb737ac14b4b7 Mon Sep 17 00:00:00 2001 From: Yassine Fathi Date: Thu, 16 Dec 2021 13:39:43 +0100 Subject: [PATCH 1/7] chore: add nvmrc with required node version --- .nvmrc | 1 + 1 file changed, 1 insertion(+) create mode 100644 .nvmrc diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000000000..b2d264b67dfd3 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v14.18.0 From c1d917c5f8e5633ae1e528b08ce097190d8f8ef7 Mon Sep 17 00:00:00 2001 From: Yassine Fathi Date: Thu, 16 Dec 2021 13:40:32 +0100 Subject: [PATCH 2/7] feat: added saved posts to reddit node with credentials on User resource --- packages/nodes-base/nodes/Reddit/GenericFunctions.ts | 2 +- packages/nodes-base/nodes/Reddit/Reddit.node.ts | 1 + packages/nodes-base/nodes/Reddit/UserDescription.ts | 6 ++++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/nodes-base/nodes/Reddit/GenericFunctions.ts b/packages/nodes-base/nodes/Reddit/GenericFunctions.ts index f9cb55b1109f6..d250fd9a6a9be 100644 --- a/packages/nodes-base/nodes/Reddit/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Reddit/GenericFunctions.ts @@ -23,7 +23,7 @@ export async function redditApiRequest( const resource = this.getNodeParameter('resource', 0) as string; - const authRequired = ['profile', 'post', 'postComment'].includes(resource); + const authRequired = ['profile', 'post', 'postComment', 'user'].includes(resource); qs.api_type = 'json'; diff --git a/packages/nodes-base/nodes/Reddit/Reddit.node.ts b/packages/nodes-base/nodes/Reddit/Reddit.node.ts index 922f8ddec6f70..aa6d401ea5c5f 100644 --- a/packages/nodes-base/nodes/Reddit/Reddit.node.ts +++ b/packages/nodes-base/nodes/Reddit/Reddit.node.ts @@ -65,6 +65,7 @@ export class Reddit implements INodeType { 'postComment', 'post', 'profile', + 'user' ], }, }, diff --git a/packages/nodes-base/nodes/Reddit/UserDescription.ts b/packages/nodes-base/nodes/Reddit/UserDescription.ts index 1defaf6e1f335..586f2457ce256 100644 --- a/packages/nodes-base/nodes/Reddit/UserDescription.ts +++ b/packages/nodes-base/nodes/Reddit/UserDescription.ts @@ -64,6 +64,10 @@ export const userFields: INodeProperties[] = [ name: 'Gilded', value: 'gilded', }, + { + name: 'Saved', + value: 'saved', + }, { name: 'Overview', value: 'overview', @@ -103,6 +107,7 @@ export const userFields: INodeProperties[] = [ 'submitted', 'comments', 'gilded', + 'saved', ], }, }, @@ -130,6 +135,7 @@ export const userFields: INodeProperties[] = [ 'gilded', 'overview', 'submitted', + 'saved', ], returnAll: [ false, From c1cdcb107c25337e03b372dcd297415e67362dae Mon Sep 17 00:00:00 2001 From: Jonathan Bennetts Date: Wed, 23 Mar 2022 12:16:10 +0000 Subject: [PATCH 3/7] Changed Details order --- packages/nodes-base/nodes/Reddit/UserDescription.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/nodes-base/nodes/Reddit/UserDescription.ts b/packages/nodes-base/nodes/Reddit/UserDescription.ts index 586f2457ce256..eda3a65fd436a 100644 --- a/packages/nodes-base/nodes/Reddit/UserDescription.ts +++ b/packages/nodes-base/nodes/Reddit/UserDescription.ts @@ -64,14 +64,14 @@ export const userFields: INodeProperties[] = [ name: 'Gilded', value: 'gilded', }, - { - name: 'Saved', - value: 'saved', - }, { name: 'Overview', value: 'overview', }, + { + name: 'Saved', + value: 'saved', + }, { name: 'Submitted', value: 'submitted', From 550eb3e757061df60d12bdda72e700b51f793766 Mon Sep 17 00:00:00 2001 From: Jonathan Bennetts Date: Wed, 23 Mar 2022 12:24:48 +0000 Subject: [PATCH 4/7] Fixed lint issue --- packages/nodes-base/nodes/Reddit/Reddit.node.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nodes-base/nodes/Reddit/Reddit.node.ts b/packages/nodes-base/nodes/Reddit/Reddit.node.ts index a61df586c3b78..66bf9d800a4a0 100644 --- a/packages/nodes-base/nodes/Reddit/Reddit.node.ts +++ b/packages/nodes-base/nodes/Reddit/Reddit.node.ts @@ -64,7 +64,7 @@ export class Reddit implements INodeType { 'postComment', 'post', 'profile', - 'user' + 'user', ], }, }, From 3f3ce1386977011a38e27d3a26ec1b80cee4f4a7 Mon Sep 17 00:00:00 2001 From: Jonathan Bennetts Date: Wed, 23 Mar 2022 17:26:15 +0000 Subject: [PATCH 5/7] Moved saved posts to profile as it only works for the logged in user, This avoids the breaking change --- .../nodes/Reddit/GenericFunctions.ts | 2 +- .../nodes/Reddit/ProfileDescription.ts | 73 +++++++++++++++++++ .../nodes-base/nodes/Reddit/Reddit.node.ts | 12 ++- .../nodes/Reddit/UserDescription.ts | 6 -- 4 files changed, 84 insertions(+), 9 deletions(-) diff --git a/packages/nodes-base/nodes/Reddit/GenericFunctions.ts b/packages/nodes-base/nodes/Reddit/GenericFunctions.ts index d250fd9a6a9be..f9cb55b1109f6 100644 --- a/packages/nodes-base/nodes/Reddit/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Reddit/GenericFunctions.ts @@ -23,7 +23,7 @@ export async function redditApiRequest( const resource = this.getNodeParameter('resource', 0) as string; - const authRequired = ['profile', 'post', 'postComment', 'user'].includes(resource); + const authRequired = ['profile', 'post', 'postComment'].includes(resource); qs.api_type = 'json'; diff --git a/packages/nodes-base/nodes/Reddit/ProfileDescription.ts b/packages/nodes-base/nodes/Reddit/ProfileDescription.ts index 5f8f65e8c4965..da54638b4f720 100644 --- a/packages/nodes-base/nodes/Reddit/ProfileDescription.ts +++ b/packages/nodes-base/nodes/Reddit/ProfileDescription.ts @@ -60,6 +60,11 @@ export const profileFields: INodeProperties[] = [ value: 'prefs', description: 'Return the settings preferences of the logged-in user', }, + { + name: 'Saved', + value: 'saved', + description: 'Return the saved posts for the user', + }, { name: 'Trophies', value: 'trophies', @@ -77,4 +82,72 @@ export const profileFields: INodeProperties[] = [ }, }, }, + { + displayName: 'Username', + name: 'username', + type: 'string', + required: true, + default: '', + description: 'Reddit ID of the user to retrieve.', + displayOptions: { + show: { + resource: [ + 'profile', + ], + operation: [ + 'get', + ], + details: [ + 'saved', + ], + }, + }, + }, + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + default: false, + description: 'Return all results.', + displayOptions: { + show: { + resource: [ + 'profile', + ], + operation: [ + 'get', + ], + details: [ + 'saved', + ], + }, + }, + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + default: 100, + description: 'The number of results to return.', + typeOptions: { + minValue: 1, + maxValue: 100, + }, + displayOptions: { + show: { + resource: [ + 'profile', + ], + operation: [ + 'get', + ], + details: [ + 'saved', + ], + returnAll: [ + false, + ], + }, + }, + }, ]; diff --git a/packages/nodes-base/nodes/Reddit/Reddit.node.ts b/packages/nodes-base/nodes/Reddit/Reddit.node.ts index 66bf9d800a4a0..834136811c297 100644 --- a/packages/nodes-base/nodes/Reddit/Reddit.node.ts +++ b/packages/nodes-base/nodes/Reddit/Reddit.node.ts @@ -1,3 +1,4 @@ +import e = require('express'); import { IExecuteFunctions, } from 'n8n-core'; @@ -64,7 +65,6 @@ export class Reddit implements INodeType { 'postComment', 'post', 'profile', - 'user', ], }, }, @@ -353,7 +353,15 @@ export class Reddit implements INodeType { const details = this.getNodeParameter('details', i) as string; const endpoint = `api/v1/${endpoints[details]}`; - responseData = await redditApiRequest.call(this, 'GET', endpoint, {}); + let username; + + if (details === 'saved') { + username = this.getNodeParameter('username', i) as string; + } + + responseData = details === 'saved' + ? await handleListing.call(this, i, `user/${username}/saved.json`) + : await redditApiRequest.call(this, 'GET', endpoint, {}); if (details === 'identity') { responseData = responseData.features; diff --git a/packages/nodes-base/nodes/Reddit/UserDescription.ts b/packages/nodes-base/nodes/Reddit/UserDescription.ts index eda3a65fd436a..1defaf6e1f335 100644 --- a/packages/nodes-base/nodes/Reddit/UserDescription.ts +++ b/packages/nodes-base/nodes/Reddit/UserDescription.ts @@ -68,10 +68,6 @@ export const userFields: INodeProperties[] = [ name: 'Overview', value: 'overview', }, - { - name: 'Saved', - value: 'saved', - }, { name: 'Submitted', value: 'submitted', @@ -107,7 +103,6 @@ export const userFields: INodeProperties[] = [ 'submitted', 'comments', 'gilded', - 'saved', ], }, }, @@ -135,7 +130,6 @@ export const userFields: INodeProperties[] = [ 'gilded', 'overview', 'submitted', - 'saved', ], returnAll: [ false, From 11dc1a6c1fc5991f93037ae0fbab3eaa335600c0 Mon Sep 17 00:00:00 2001 From: Jonathan Bennetts Date: Wed, 23 Mar 2022 17:38:42 +0000 Subject: [PATCH 6/7] Removed .nvmrc --- .nvmrc | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .nvmrc diff --git a/.nvmrc b/.nvmrc deleted file mode 100644 index b2d264b67dfd3..0000000000000 --- a/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -v14.18.0 From fe8f9ff592587905cd902c7034be9d8bcb969b25 Mon Sep 17 00:00:00 2001 From: ricardo Date: Sat, 26 Mar 2022 19:15:15 -0400 Subject: [PATCH 7/7] :zap: Improvements --- .../nodes/Reddit/GenericFunctions.ts | 6 +++--- .../nodes/Reddit/ProfileDescription.ts | 21 ------------------- .../nodes-base/nodes/Reddit/Reddit.node.ts | 3 +-- 3 files changed, 4 insertions(+), 26 deletions(-) diff --git a/packages/nodes-base/nodes/Reddit/GenericFunctions.ts b/packages/nodes-base/nodes/Reddit/GenericFunctions.ts index f9cb55b1109f6..85d311ffb6f62 100644 --- a/packages/nodes-base/nodes/Reddit/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Reddit/GenericFunctions.ts @@ -4,7 +4,7 @@ import { } from 'n8n-core'; import { - IDataObject, NodeApiError, NodeOperationError, + IDataObject, JsonObject, NodeApiError, NodeOperationError, } from 'n8n-workflow'; import { @@ -45,7 +45,7 @@ export async function redditApiRequest( try { return await this.helpers.requestOAuth2.call(this, 'redditOAuth2Api', options); } catch (error) { - throw new NodeApiError(this.getNode(), error); + throw new NodeApiError(this.getNode(), error as JsonObject); } } else { @@ -53,7 +53,7 @@ export async function redditApiRequest( try { return await this.helpers.request.call(this, options); } catch (error) { - throw new NodeApiError(this.getNode(), error); + throw new NodeApiError(this.getNode(), error as JsonObject); } } } diff --git a/packages/nodes-base/nodes/Reddit/ProfileDescription.ts b/packages/nodes-base/nodes/Reddit/ProfileDescription.ts index da54638b4f720..672ed106a360d 100644 --- a/packages/nodes-base/nodes/Reddit/ProfileDescription.ts +++ b/packages/nodes-base/nodes/Reddit/ProfileDescription.ts @@ -82,27 +82,6 @@ export const profileFields: INodeProperties[] = [ }, }, }, - { - displayName: 'Username', - name: 'username', - type: 'string', - required: true, - default: '', - description: 'Reddit ID of the user to retrieve.', - displayOptions: { - show: { - resource: [ - 'profile', - ], - operation: [ - 'get', - ], - details: [ - 'saved', - ], - }, - }, - }, { displayName: 'Return All', name: 'returnAll', diff --git a/packages/nodes-base/nodes/Reddit/Reddit.node.ts b/packages/nodes-base/nodes/Reddit/Reddit.node.ts index 834136811c297..b147cfc2306a7 100644 --- a/packages/nodes-base/nodes/Reddit/Reddit.node.ts +++ b/packages/nodes-base/nodes/Reddit/Reddit.node.ts @@ -1,4 +1,3 @@ -import e = require('express'); import { IExecuteFunctions, } from 'n8n-core'; @@ -356,7 +355,7 @@ export class Reddit implements INodeType { let username; if (details === 'saved') { - username = this.getNodeParameter('username', i) as string; + ({ name: username } = await redditApiRequest.call(this, 'GET', `api/v1/me`, {})); } responseData = details === 'saved'