feat(slack Node): add operation get many for user resource (#3150)

This commit is contained in:
Jonathan Bennetts 2022-09-29 10:26:51 +01:00 committed by GitHub
parent a8da9c31a9
commit 2714b4ced7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 59 additions and 13 deletions

View file

@ -17,6 +17,7 @@ const userScopes = [
'usergroups:read',
'users.profile:read',
'users.profile:write',
'users:read',
];
export class SlackOAuth2Api implements ICredentialType {

View file

@ -1,11 +1,8 @@
import { IExecuteFunctions } from 'n8n-core';
import {
ICredentialsDecrypted,
ICredentialTestFunctions,
IDataObject,
ILoadOptionsFunctions,
INodeCredentialTestResult,
INodeExecutionData,
INodePropertyOptions,
INodeType,
@ -15,23 +12,14 @@ import {
} from 'n8n-workflow';
import { channelFields, channelOperations } from './ChannelDescription';
import { messageFields, messageOperations } from './MessageDescription';
import { starFields, starOperations } from './StarDescription';
import { fileFields, fileOperations } from './FileDescription';
import { reactionFields, reactionOperations } from './ReactionDescription';
import { userGroupFields, userGroupOperations } from './UserGroupDescription';
import { userFields, userOperations } from './UserDescription';
import { userProfileFields, userProfileOperations } from './UserProfileDescription';
import { slackApiRequest, slackApiRequestAllItems, validateJSON } from './GenericFunctions';
import { IAttachment } from './MessageInterface';
import moment from 'moment';
@ -1206,6 +1194,24 @@ export class Slack implements INodeType {
responseData = await slackApiRequest.call(this, 'GET', '/users.info', {}, qs);
responseData = responseData.user;
}
//https://api.slack.com/methods/users.list
if (operation === 'getAll') {
const returnAll = this.getNodeParameter('returnAll', i) as boolean;
if (returnAll === true) {
responseData = await slackApiRequestAllItems.call(
this,
'members',
'GET',
'/users.list',
{},
qs,
);
} else {
qs.limit = this.getNodeParameter('limit', i) as number;
responseData = await slackApiRequest.call(this, 'GET', '/users.list', {}, qs);
responseData = responseData.members;
}
}
//https://api.slack.com/methods/users.getPresence
if (operation === 'getPresence') {
qs.user = this.getNodeParameter('user', i) as string;

View file

@ -18,6 +18,12 @@ export const userOperations: INodeProperties[] = [
description: 'Get information about a user',
action: 'Get information about a user',
},
{
name: 'Get Many',
value: 'getAll',
description: 'Get a list of many users',
action: 'Get many users',
},
{
name: 'Get Presence',
value: 'getPresence',
@ -50,6 +56,40 @@ export const userFields: INodeProperties[] = [
required: true,
description: 'The ID of the user to get information about',
},
/* -------------------------------------------------------------------------- */
/* user:getAll */
/* -------------------------------------------------------------------------- */
{
displayName: 'Return All',
name: 'returnAll',
type: 'boolean',
displayOptions: {
show: {
resource: ['user'],
operation: ['getAll'],
},
},
default: false,
description: 'Whether to return all results or only up to a given limit',
},
{
displayName: 'Limit',
name: 'limit',
type: 'number',
displayOptions: {
show: {
resource: ['user'],
operation: ['getAll'],
returnAll: [false],
},
},
typeOptions: {
minValue: 1,
maxValue: 100,
},
default: 50,
description: 'Max number of results to return',
},
/* -------------------------------------------------------------------------- */
/* user:getPresence */

View file

@ -1,5 +1,4 @@
import { INodeProperties } from 'n8n-workflow';
import { text } from 'express';
export const userProfileOperations: INodeProperties[] = [
{