n8n-nodes-base 0.161.0 → 0.162.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/credentials/GristApi.credentials.js +20 -0
  2. package/dist/credentials/GristApi.credentials.js.map +1 -1
  3. package/dist/nodes/Google/Chat/GenericFunctions.d.ts +14 -0
  4. package/dist/nodes/Google/Chat/GenericFunctions.js +160 -0
  5. package/dist/nodes/Google/Chat/GenericFunctions.js.map +1 -0
  6. package/dist/nodes/Google/Chat/GoogleChat.node.d.ts +14 -0
  7. package/dist/nodes/Google/Chat/GoogleChat.node.js +358 -0
  8. package/dist/nodes/Google/Chat/GoogleChat.node.js.map +1 -0
  9. package/dist/nodes/Google/Chat/GoogleChat.node.json +27 -0
  10. package/dist/nodes/Google/Chat/MessageInterface.d.ts +36 -0
  11. package/dist/nodes/Google/Chat/MessageInterface.js +9 -0
  12. package/dist/nodes/Google/Chat/MessageInterface.js.map +1 -0
  13. package/dist/nodes/Google/Chat/descriptions/AttachmentDescription.d.ts +3 -0
  14. package/dist/nodes/Google/Chat/descriptions/AttachmentDescription.js +47 -0
  15. package/dist/nodes/Google/Chat/descriptions/AttachmentDescription.js.map +1 -0
  16. package/dist/nodes/Google/Chat/descriptions/IncomingWebhookDescription.d.ts +3 -0
  17. package/dist/nodes/Google/Chat/descriptions/IncomingWebhookDescription.js +180 -0
  18. package/dist/nodes/Google/Chat/descriptions/IncomingWebhookDescription.js.map +1 -0
  19. package/dist/nodes/Google/Chat/descriptions/MediaDescription.d.ts +3 -0
  20. package/dist/nodes/Google/Chat/descriptions/MediaDescription.js +65 -0
  21. package/dist/nodes/Google/Chat/descriptions/MediaDescription.js.map +1 -0
  22. package/dist/nodes/Google/Chat/descriptions/MemberDescription.d.ts +3 -0
  23. package/dist/nodes/Google/Chat/descriptions/MemberDescription.js +75 -0
  24. package/dist/nodes/Google/Chat/descriptions/MemberDescription.js.map +1 -0
  25. package/dist/nodes/Google/Chat/descriptions/MessageDescription.d.ts +3 -0
  26. package/dist/nodes/Google/Chat/descriptions/MessageDescription.js +323 -0
  27. package/dist/nodes/Google/Chat/descriptions/MessageDescription.js.map +1 -0
  28. package/dist/nodes/Google/Chat/descriptions/SpaceDescription.d.ts +3 -0
  29. package/dist/nodes/Google/Chat/descriptions/SpaceDescription.js +54 -0
  30. package/dist/nodes/Google/Chat/descriptions/SpaceDescription.js.map +1 -0
  31. package/dist/nodes/Google/Chat/descriptions/index.d.ts +6 -0
  32. package/dist/nodes/Google/Chat/descriptions/index.js +19 -0
  33. package/dist/nodes/Google/Chat/descriptions/index.js.map +1 -0
  34. package/dist/nodes/Google/Chat/googleChat.svg +1 -0
  35. package/dist/nodes/Grist/GenericFunctions.js +5 -3
  36. package/dist/nodes/Grist/GenericFunctions.js.map +1 -1
  37. package/dist/nodes/Grist/Grist.node.js +5 -3
  38. package/dist/nodes/Grist/Grist.node.js.map +1 -1
  39. package/dist/nodes/HaloPSA/HaloPSA.node.json +3 -5
  40. package/dist/nodes/Linear/LinearTrigger.node.json +20 -0
  41. package/dist/nodes/Telegram/GenericFunctions.js +1 -0
  42. package/dist/nodes/Telegram/GenericFunctions.js.map +1 -1
  43. package/dist/nodes/Telegram/TelegramTrigger.node.js +5 -1
  44. package/dist/nodes/Telegram/TelegramTrigger.node.js.map +1 -1
  45. package/dist/nodes/Wait/Wait.node.js +14 -0
  46. package/dist/nodes/Wait/Wait.node.js.map +1 -1
  47. package/dist/nodes/Webhook/Webhook.node.js +61 -15
  48. package/dist/nodes/Webhook/Webhook.node.js.map +1 -1
  49. package/package.json +4 -3
@@ -28,6 +28,10 @@ class GristApi {
28
28
  name: 'Paid',
29
29
  value: 'paid',
30
30
  },
31
+ {
32
+ name: 'Self-hosted',
33
+ value: 'selfHosted',
34
+ },
31
35
  ],
32
36
  },
33
37
  {
@@ -45,6 +49,22 @@ class GristApi {
45
49
  },
46
50
  },
47
51
  },
52
+ {
53
+ displayName: 'Self-hosted URL',
54
+ name: 'selfHostedUrl',
55
+ type: 'string',
56
+ default: '',
57
+ placeholder: 'http://localhost:8484',
58
+ required: true,
59
+ description: 'URL of your Grist instance. Include http/https without /api and no trailing slash.',
60
+ displayOptions: {
61
+ show: {
62
+ planType: [
63
+ 'selfHosted',
64
+ ],
65
+ },
66
+ },
67
+ },
48
68
  ];
49
69
  }
50
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GristApi.credentials.js","sourceRoot":"","sources":["../../credentials/GristApi.credentials.ts"],"names":[],"mappings":";;;AAKA,MAAa,QAAQ;IAArB;QACC,SAAI,GAAG,UAAU,CAAC;QAClB,gBAAW,GAAG,WAAW,CAAC;QAC1B,qBAAgB,GAAG,OAAO,CAAC;QAC3B,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,WAAW;gBACxB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,MAAM;gBACf,OAAO,EAAE;oBACR;wBACC,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE,MAAM;qBACb;oBACD;wBACC,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE,MAAM;qBACb;iBACD;aACD;YACD;gBACC,WAAW,EAAE,kBAAkB;gBAC/B,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,+BAA+B;gBAC5C,cAAc,EAAE;oBACf,IAAI,EAAE;wBACL,QAAQ,EAAE;4BACT,MAAM;yBACN;qBACD;iBACD;aACD;SACD,CAAC;IACH,CAAC;CAAA;AA5CD,4BA4CC"}
1
+ {"version":3,"file":"GristApi.credentials.js","sourceRoot":"","sources":["../../credentials/GristApi.credentials.ts"],"names":[],"mappings":";;;AAKA,MAAa,QAAQ;IAArB;QACC,SAAI,GAAG,UAAU,CAAC;QAClB,gBAAW,GAAG,WAAW,CAAC;QAC1B,qBAAgB,GAAG,OAAO,CAAC;QAC3B,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,WAAW;gBACxB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,MAAM;gBACf,OAAO,EAAE;oBACR;wBACC,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE,MAAM;qBACb;oBACD;wBACC,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE,MAAM;qBACb;oBACD;wBACC,IAAI,EAAE,aAAa;wBACnB,KAAK,EAAE,YAAY;qBACnB;iBACD;aACD;YACD;gBACC,WAAW,EAAE,kBAAkB;gBAC/B,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,+BAA+B;gBAC5C,cAAc,EAAE;oBACf,IAAI,EAAE;wBACL,QAAQ,EAAE;4BACT,MAAM;yBACN;qBACD;iBACD;aACD;YACD;gBACC,WAAW,EAAE,iBAAiB;gBAC9B,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,uBAAuB;gBACpC,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,oFAAoF;gBACjG,cAAc,EAAE;oBACf,IAAI,EAAE;wBACL,QAAQ,EAAE;4BACT,YAAY;yBACZ;qBACD;iBACD;aACD;SACD,CAAC;IACH,CAAC;CAAA;AAhED,4BAgEC"}
@@ -0,0 +1,14 @@
1
+ import { IExecuteFunctions, IExecuteSingleFunctions, ILoadOptionsFunctions } from 'n8n-core';
2
+ import { ICredentialTestFunctions, IDataObject, INodeProperties } from 'n8n-workflow';
3
+ interface IGoogleAuthCredentials {
4
+ delegatedEmail?: string;
5
+ email: string;
6
+ inpersonate: boolean;
7
+ privateKey: string;
8
+ }
9
+ export declare function googleApiRequest(this: IExecuteFunctions | IExecuteSingleFunctions | ILoadOptionsFunctions, method: string, resource: string, body?: any, qs?: IDataObject, uri?: string, noCredentials?: boolean, encoding?: null | undefined): Promise<any>;
10
+ export declare function googleApiRequestAllItems(this: IExecuteFunctions | ILoadOptionsFunctions, propertyName: string, method: string, endpoint: string, body?: any, query?: IDataObject): Promise<any>;
11
+ export declare function getAccessToken(this: IExecuteFunctions | IExecuteSingleFunctions | ILoadOptionsFunctions | ICredentialTestFunctions, credentials: IGoogleAuthCredentials): Promise<IDataObject>;
12
+ export declare function validateJSON(json: string | undefined): any;
13
+ export declare function getPagingParameters(resource: string, operation?: string): INodeProperties[];
14
+ export {};
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPagingParameters = exports.validateJSON = exports.getAccessToken = exports.googleApiRequestAllItems = exports.googleApiRequest = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const moment = require("moment-timezone");
6
+ const jwt = require("jsonwebtoken");
7
+ async function googleApiRequest(method, resource, body = {}, qs = {}, uri, noCredentials = false, encoding) {
8
+ const options = {
9
+ headers: {
10
+ 'Content-Type': 'application/json',
11
+ },
12
+ method,
13
+ body,
14
+ qs,
15
+ uri: uri || `https://chat.googleapis.com${resource}`,
16
+ json: true,
17
+ };
18
+ if (Object.keys(body).length === 0) {
19
+ delete options.body;
20
+ }
21
+ if (encoding === null) {
22
+ options.encoding = null;
23
+ }
24
+ let responseData;
25
+ try {
26
+ if (noCredentials) {
27
+ responseData = await this.helpers.request(options);
28
+ }
29
+ else {
30
+ const credentials = await this.getCredentials('googleApi');
31
+ if (credentials === undefined) {
32
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'No credentials got returned!');
33
+ }
34
+ const { access_token } = await getAccessToken.call(this, credentials);
35
+ options.headers.Authorization = `Bearer ${access_token}`;
36
+ responseData = await this.helpers.request(options);
37
+ }
38
+ }
39
+ catch (error) {
40
+ if (error.code === 'ERR_OSSL_PEM_NO_START_LINE') {
41
+ error.statusCode = '401';
42
+ }
43
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
44
+ }
45
+ if (Object.keys(responseData).length !== 0) {
46
+ return responseData;
47
+ }
48
+ else {
49
+ return { 'success': true };
50
+ }
51
+ }
52
+ exports.googleApiRequest = googleApiRequest;
53
+ async function googleApiRequestAllItems(propertyName, method, endpoint, body = {}, query = {}) {
54
+ const returnData = [];
55
+ let responseData;
56
+ query.pageSize = 100;
57
+ do {
58
+ responseData = await googleApiRequest.call(this, method, endpoint, body, query);
59
+ query.pageToken = responseData['nextPageToken'];
60
+ returnData.push.apply(returnData, responseData[propertyName]);
61
+ } while (responseData['nextPageToken'] !== undefined &&
62
+ responseData['nextPageToken'] !== '');
63
+ return returnData;
64
+ }
65
+ exports.googleApiRequestAllItems = googleApiRequestAllItems;
66
+ function getAccessToken(credentials) {
67
+ const scopes = [
68
+ 'https://www.googleapis.com/auth/chat.bot',
69
+ ];
70
+ const now = moment().unix();
71
+ credentials.email = credentials.email.trim();
72
+ const privateKey = credentials.privateKey.replace(/\\n/g, '\n').trim();
73
+ const signature = jwt.sign({
74
+ 'iss': credentials.email,
75
+ 'sub': credentials.delegatedEmail || credentials.email,
76
+ 'scope': scopes.join(' '),
77
+ 'aud': `https://oauth2.googleapis.com/token`,
78
+ 'iat': now,
79
+ 'exp': now + 3600,
80
+ }, privateKey, {
81
+ algorithm: 'RS256',
82
+ header: {
83
+ 'kid': privateKey,
84
+ 'typ': 'JWT',
85
+ 'alg': 'RS256',
86
+ },
87
+ });
88
+ const options = {
89
+ headers: {
90
+ 'Content-Type': 'application/x-www-form-urlencoded',
91
+ },
92
+ method: 'POST',
93
+ form: {
94
+ grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer',
95
+ assertion: signature,
96
+ },
97
+ uri: 'https://oauth2.googleapis.com/token',
98
+ json: true,
99
+ };
100
+ return this.helpers.request(options);
101
+ }
102
+ exports.getAccessToken = getAccessToken;
103
+ function validateJSON(json) {
104
+ let result;
105
+ try {
106
+ result = JSON.parse(json);
107
+ }
108
+ catch (exception) {
109
+ result = undefined;
110
+ }
111
+ return result;
112
+ }
113
+ exports.validateJSON = validateJSON;
114
+ function getPagingParameters(resource, operation = 'getAll') {
115
+ const pagingParameters = [
116
+ {
117
+ displayName: 'Return All',
118
+ name: 'returnAll',
119
+ type: 'boolean',
120
+ displayOptions: {
121
+ show: {
122
+ resource: [
123
+ resource,
124
+ ],
125
+ operation: [
126
+ operation,
127
+ ],
128
+ },
129
+ },
130
+ default: false,
131
+ description: 'If all results should be returned or only up to a given limit',
132
+ },
133
+ {
134
+ displayName: 'Limit',
135
+ name: 'limit',
136
+ type: 'number',
137
+ typeOptions: {
138
+ maxValue: 1000,
139
+ },
140
+ displayOptions: {
141
+ show: {
142
+ resource: [
143
+ resource,
144
+ ],
145
+ operation: [
146
+ operation,
147
+ ],
148
+ returnAll: [
149
+ false,
150
+ ],
151
+ },
152
+ },
153
+ default: 100,
154
+ description: 'How many results to return',
155
+ },
156
+ ];
157
+ return pagingParameters;
158
+ }
159
+ exports.getPagingParameters = getPagingParameters;
160
+ //# sourceMappingURL=GenericFunctions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../../../../nodes/Google/Chat/GenericFunctions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { IExecuteFunctions } from 'n8n-core';
2
+ import { ICredentialsDecrypted, ICredentialTestFunctions, ILoadOptionsFunctions, INodeCredentialTestResult, INodeExecutionData, INodePropertyOptions, INodeType, INodeTypeDescription } from 'n8n-workflow';
3
+ export declare class GoogleChat implements INodeType {
4
+ description: INodeTypeDescription;
5
+ methods: {
6
+ loadOptions: {
7
+ getSpaces(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
8
+ };
9
+ credentialTest: {
10
+ testGoogleTokenAuth(this: ICredentialTestFunctions, credential: ICredentialsDecrypted): Promise<INodeCredentialTestResult>;
11
+ };
12
+ };
13
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
14
+ }
@@ -0,0 +1,358 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GoogleChat = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const descriptions_1 = require("./descriptions");
6
+ const GenericFunctions_1 = require("./GenericFunctions");
7
+ const moment = require("moment-timezone");
8
+ const jwt = require("jsonwebtoken");
9
+ class GoogleChat {
10
+ constructor() {
11
+ this.description = {
12
+ displayName: 'Google Chat',
13
+ name: 'googleChat',
14
+ icon: 'file:googleChat.svg',
15
+ group: ['input'],
16
+ version: 1,
17
+ subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
18
+ description: 'Consume Google Chat API',
19
+ defaults: {
20
+ name: 'Google Chat',
21
+ color: '#0aa55c',
22
+ },
23
+ inputs: ['main'],
24
+ outputs: ['main'],
25
+ credentials: [
26
+ {
27
+ name: 'googleApi',
28
+ required: true,
29
+ testedBy: 'testGoogleTokenAuth',
30
+ },
31
+ ],
32
+ properties: [
33
+ {
34
+ displayName: 'Resource',
35
+ name: 'resource',
36
+ required: true,
37
+ noDataExpression: true,
38
+ type: 'options',
39
+ options: [
40
+ {
41
+ name: 'Member',
42
+ value: 'member',
43
+ },
44
+ {
45
+ name: 'Message',
46
+ value: 'message',
47
+ },
48
+ {
49
+ name: 'Space',
50
+ value: 'space',
51
+ },
52
+ ],
53
+ default: 'message',
54
+ description: 'The resource to operate on',
55
+ },
56
+ ...descriptions_1.memberOperations,
57
+ ...descriptions_1.memberFields,
58
+ ...descriptions_1.messageOperations,
59
+ ...descriptions_1.messageFields,
60
+ ...descriptions_1.spaceOperations,
61
+ ...descriptions_1.spaceFields,
62
+ ],
63
+ };
64
+ this.methods = {
65
+ loadOptions: {
66
+ async getSpaces() {
67
+ const returnData = [];
68
+ const spaces = await GenericFunctions_1.googleApiRequestAllItems.call(this, 'spaces', 'GET', `/v1/spaces`);
69
+ for (const space of spaces) {
70
+ returnData.push({
71
+ name: space.displayName,
72
+ value: space.name,
73
+ });
74
+ }
75
+ return returnData;
76
+ },
77
+ },
78
+ credentialTest: {
79
+ async testGoogleTokenAuth(credential) {
80
+ const scopes = [
81
+ 'https://www.googleapis.com/auth/chat.bot',
82
+ ];
83
+ const now = moment().unix();
84
+ const email = credential.data.email.trim();
85
+ const privateKey = credential.data.privateKey.replace(/\\n/g, '\n').trim();
86
+ try {
87
+ const signature = jwt.sign({
88
+ 'iss': email,
89
+ 'sub': credential.data.delegatedEmail || email,
90
+ 'scope': scopes.join(' '),
91
+ 'aud': `https://oauth2.googleapis.com/token`,
92
+ 'iat': now,
93
+ 'exp': now,
94
+ }, privateKey, {
95
+ algorithm: 'RS256',
96
+ header: {
97
+ 'kid': privateKey,
98
+ 'typ': 'JWT',
99
+ 'alg': 'RS256',
100
+ },
101
+ });
102
+ const options = {
103
+ headers: {
104
+ 'Content-Type': 'application/x-www-form-urlencoded',
105
+ },
106
+ method: 'POST',
107
+ form: {
108
+ grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer',
109
+ assertion: signature,
110
+ },
111
+ uri: 'https://oauth2.googleapis.com/token',
112
+ json: true,
113
+ };
114
+ const response = await this.helpers.request(options);
115
+ if (!response.access_token) {
116
+ return {
117
+ status: 'Error',
118
+ message: JSON.stringify(response),
119
+ };
120
+ }
121
+ }
122
+ catch (err) {
123
+ return {
124
+ status: 'Error',
125
+ message: `${err.message}`,
126
+ };
127
+ }
128
+ return {
129
+ status: 'OK',
130
+ message: 'Connection successful!',
131
+ };
132
+ },
133
+ },
134
+ };
135
+ }
136
+ async execute() {
137
+ const items = this.getInputData();
138
+ const returnData = [];
139
+ const length = items.length;
140
+ const qs = {};
141
+ let responseData;
142
+ const resource = this.getNodeParameter('resource', 0);
143
+ const operation = this.getNodeParameter('operation', 0);
144
+ for (let i = 0; i < length; i++) {
145
+ try {
146
+ if (resource === 'media') {
147
+ if (operation === 'download') {
148
+ const resourceName = this.getNodeParameter('resourceName', i);
149
+ const endpoint = `/v1/media/${resourceName}?alt=media`;
150
+ const encoding = null;
151
+ responseData = await GenericFunctions_1.googleApiRequest.call(this, 'GET', endpoint, undefined, undefined, undefined, undefined, encoding);
152
+ const newItem = {
153
+ json: items[i].json,
154
+ binary: {},
155
+ };
156
+ if (items[i].binary !== undefined) {
157
+ Object.assign(newItem.binary, items[i].binary);
158
+ }
159
+ items[i] = newItem;
160
+ const binaryPropertyName = this.getNodeParameter('binaryPropertyName', i);
161
+ items[i].binary[binaryPropertyName] = await this.helpers.prepareBinaryData(responseData, endpoint);
162
+ }
163
+ }
164
+ else if (resource === 'space') {
165
+ if (operation === 'get') {
166
+ const spaceId = this.getNodeParameter('spaceId', i);
167
+ responseData = await GenericFunctions_1.googleApiRequest.call(this, 'GET', `/v1/${spaceId}`);
168
+ }
169
+ else if (operation === 'getAll') {
170
+ const returnAll = this.getNodeParameter('returnAll', 0);
171
+ if (returnAll) {
172
+ responseData = await GenericFunctions_1.googleApiRequestAllItems.call(this, 'spaces', 'GET', `/v1/spaces`);
173
+ }
174
+ else {
175
+ const limit = this.getNodeParameter('limit', i);
176
+ qs.pageSize = limit;
177
+ responseData = await GenericFunctions_1.googleApiRequest.call(this, 'GET', `/v1/spaces`, undefined, qs);
178
+ responseData = responseData.spaces;
179
+ }
180
+ }
181
+ }
182
+ else if (resource === 'member') {
183
+ if (operation === 'get') {
184
+ const memberId = this.getNodeParameter('memberId', i);
185
+ responseData = await GenericFunctions_1.googleApiRequest.call(this, 'GET', `/v1/${memberId}`);
186
+ }
187
+ else if (operation === 'getAll') {
188
+ const spaceId = this.getNodeParameter('spaceId', i);
189
+ const returnAll = this.getNodeParameter('returnAll', 0);
190
+ if (returnAll) {
191
+ responseData = await GenericFunctions_1.googleApiRequestAllItems.call(this, 'memberships', 'GET', `/v1/${spaceId}/members`, undefined, qs);
192
+ }
193
+ else {
194
+ const limit = this.getNodeParameter('limit', i);
195
+ qs.pageSize = limit;
196
+ responseData = await GenericFunctions_1.googleApiRequest.call(this, 'GET', `/v1/${spaceId}/members`, undefined, qs);
197
+ responseData = responseData.memberships;
198
+ }
199
+ }
200
+ }
201
+ else if (resource === 'message') {
202
+ if (operation === 'create') {
203
+ const spaceId = this.getNodeParameter('spaceId', i);
204
+ const additionalFields = this.getNodeParameter('additionalFields', i);
205
+ if (additionalFields.threadKey) {
206
+ qs.threadKey = additionalFields.threadKey;
207
+ }
208
+ if (additionalFields.requestId) {
209
+ qs.requestId = additionalFields.requestId;
210
+ }
211
+ let message = {};
212
+ const jsonParameters = this.getNodeParameter('jsonParameters', i);
213
+ if (jsonParameters) {
214
+ const messageJson = this.getNodeParameter('messageJson', i);
215
+ if (messageJson instanceof Object) {
216
+ message = messageJson;
217
+ }
218
+ else {
219
+ if (GenericFunctions_1.validateJSON(messageJson) !== undefined) {
220
+ message = JSON.parse(messageJson);
221
+ }
222
+ else {
223
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Message (JSON) must be a valid json');
224
+ }
225
+ }
226
+ }
227
+ else {
228
+ const messageUi = this.getNodeParameter('messageUi', i);
229
+ if (messageUi.text && messageUi.text !== '') {
230
+ message.text = messageUi.text;
231
+ }
232
+ else {
233
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Message Text must be provided.');
234
+ }
235
+ }
236
+ const body = {};
237
+ Object.assign(body, message);
238
+ responseData = await GenericFunctions_1.googleApiRequest.call(this, 'POST', `/v1/${spaceId}/messages`, body, qs);
239
+ }
240
+ else if (operation === 'delete') {
241
+ const messageId = this.getNodeParameter('messageId', i);
242
+ responseData = await GenericFunctions_1.googleApiRequest.call(this, 'DELETE', `/v1/${messageId}`);
243
+ }
244
+ else if (operation === 'get') {
245
+ const messageId = this.getNodeParameter('messageId', i);
246
+ responseData = await GenericFunctions_1.googleApiRequest.call(this, 'GET', `/v1/${messageId}`);
247
+ }
248
+ else if (operation === 'update') {
249
+ const messageId = this.getNodeParameter('messageId', i);
250
+ let message = {};
251
+ const jsonParameters = this.getNodeParameter('jsonParameters', i);
252
+ if (jsonParameters) {
253
+ const updateFieldsJson = this.getNodeParameter('updateFieldsJson', i);
254
+ if (updateFieldsJson instanceof Object) {
255
+ message = updateFieldsJson;
256
+ }
257
+ else {
258
+ if (GenericFunctions_1.validateJSON(updateFieldsJson) !== undefined) {
259
+ message = JSON.parse(updateFieldsJson);
260
+ }
261
+ else {
262
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Update Fields (JSON) must be a valid json');
263
+ }
264
+ }
265
+ }
266
+ else {
267
+ const updateFieldsUi = this.getNodeParameter('updateFieldsUi', i);
268
+ if (updateFieldsUi.text) {
269
+ message.text = updateFieldsUi.text;
270
+ }
271
+ }
272
+ const body = {};
273
+ Object.assign(body, message);
274
+ let updateMask = '';
275
+ if (message.text) {
276
+ updateMask += 'text,';
277
+ }
278
+ if (message.cards) {
279
+ updateMask += 'cards,';
280
+ }
281
+ updateMask = updateMask.slice(0, -1);
282
+ qs.updateMask = updateMask;
283
+ responseData = await GenericFunctions_1.googleApiRequest.call(this, 'PUT', `/v1/${messageId}`, body, qs);
284
+ }
285
+ }
286
+ else if (resource === 'attachment') {
287
+ if (operation === 'get') {
288
+ const attachmentName = this.getNodeParameter('attachmentName', i);
289
+ responseData = await GenericFunctions_1.googleApiRequest.call(this, 'GET', `/v1/${attachmentName}`);
290
+ }
291
+ }
292
+ else if (resource === 'incomingWebhook') {
293
+ if (operation === 'create') {
294
+ const uri = this.getNodeParameter('incomingWebhookUrl', i);
295
+ const additionalFields = this.getNodeParameter('additionalFields', i);
296
+ if (additionalFields.threadKey) {
297
+ qs.threadKey = additionalFields.threadKey;
298
+ }
299
+ let message = {};
300
+ const jsonParameters = this.getNodeParameter('jsonParameters', i);
301
+ if (jsonParameters) {
302
+ const messageJson = this.getNodeParameter('messageJson', i);
303
+ if (messageJson instanceof Object) {
304
+ message = messageJson;
305
+ }
306
+ else {
307
+ if (GenericFunctions_1.validateJSON(messageJson) !== undefined) {
308
+ message = JSON.parse(messageJson);
309
+ }
310
+ else {
311
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Message (JSON) must be a valid json');
312
+ }
313
+ }
314
+ }
315
+ else {
316
+ const messageUi = this.getNodeParameter('messageUi', i);
317
+ if (messageUi.text && messageUi.text !== '') {
318
+ message.text = messageUi.text;
319
+ }
320
+ else {
321
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Message Text must be provided.');
322
+ }
323
+ }
324
+ const body = {};
325
+ Object.assign(body, message);
326
+ responseData = await GenericFunctions_1.googleApiRequest.call(this, 'POST', '', body, qs, uri, true);
327
+ }
328
+ }
329
+ if (Array.isArray(responseData)) {
330
+ returnData.push.apply(returnData, responseData);
331
+ }
332
+ else if (responseData !== undefined) {
333
+ returnData.push(responseData);
334
+ }
335
+ }
336
+ catch (error) {
337
+ if (this.continueOnFail()) {
338
+ if (operation === 'download') {
339
+ items[i].json = { error: error.message };
340
+ }
341
+ else {
342
+ returnData.push({ error: error.message });
343
+ }
344
+ continue;
345
+ }
346
+ throw error;
347
+ }
348
+ }
349
+ if (operation === 'download') {
350
+ return this.prepareOutputData(items);
351
+ }
352
+ else {
353
+ return [this.helpers.returnJsonArray(returnData)];
354
+ }
355
+ }
356
+ }
357
+ exports.GoogleChat = GoogleChat;
358
+ //# sourceMappingURL=GoogleChat.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GoogleChat.node.js","sourceRoot":"","sources":["../../../../nodes/Google/Chat/GoogleChat.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ {
2
+ "node": "n8n-nodes-base.googleChat",
3
+ "nodeVersion": "1.0",
4
+ "codexVersion": "1.0",
5
+ "categories": [
6
+ "Communication"
7
+ ],
8
+ "resources": {
9
+ "credentialDocumentation": [
10
+ {
11
+ "url": "https://docs.n8n.io/credentials/google"
12
+ }
13
+ ],
14
+ "primaryDocumentation": [
15
+ {
16
+ "url": "https://docs.n8n.io/nodes/n8n-nodes-base.googleChat/"
17
+ }
18
+ ],
19
+ "generic": [
20
+ {
21
+ "label": "15 Google apps you can combine and automate to increase productivity",
22
+ "icon": "💡",
23
+ "url": "https://n8n.io/blog/automate-google-apps-for-productivity/"
24
+ }
25
+ ]
26
+ }
27
+ }