@advenimuss/n8n-nodes-msgraph 0.1.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.
- package/README.md +1 -0
- package/dist/credentials/MsGraphOAuth2Api.credentials.d.ts +7 -0
- package/dist/credentials/MsGraphOAuth2Api.credentials.js +69 -0
- package/dist/credentials/MsGraphOAuth2Api.credentials.js.map +1 -0
- package/dist/nodes/MsGraph.node.d.ts +5 -0
- package/dist/nodes/MsGraph.node.js +500 -0
- package/dist/nodes/MsGraph.node.js.map +1 -0
- package/index.js +12 -0
- package/package.json +57 -0
package/README.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MsGraphOAuth2Api = void 0;
|
|
4
|
+
class MsGraphOAuth2Api {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'msGraphOAuth2Api';
|
|
7
|
+
this.displayName = 'Microsoft Graph OAuth2 API';
|
|
8
|
+
this.documentationUrl = 'https://docs.microsoft.com/en-us/graph/auth-v2-user';
|
|
9
|
+
this.properties = [
|
|
10
|
+
{
|
|
11
|
+
displayName: 'Authorization URL',
|
|
12
|
+
name: 'authUrl',
|
|
13
|
+
type: 'string',
|
|
14
|
+
default: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',
|
|
15
|
+
required: true,
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
displayName: 'Token URL',
|
|
19
|
+
name: 'tokenUrl',
|
|
20
|
+
type: 'string',
|
|
21
|
+
default: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',
|
|
22
|
+
required: true,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
displayName: 'Client ID',
|
|
26
|
+
name: 'clientId',
|
|
27
|
+
type: 'string',
|
|
28
|
+
default: '',
|
|
29
|
+
required: true,
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
displayName: 'Client Secret',
|
|
33
|
+
name: 'clientSecret',
|
|
34
|
+
type: 'string',
|
|
35
|
+
typeOptions: {
|
|
36
|
+
password: true,
|
|
37
|
+
},
|
|
38
|
+
default: '',
|
|
39
|
+
required: true,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
displayName: 'Scope',
|
|
43
|
+
name: 'scope',
|
|
44
|
+
type: 'string',
|
|
45
|
+
default: 'offline_access user.read',
|
|
46
|
+
description: 'Space-separated list of scopes to request',
|
|
47
|
+
required: true,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
displayName: 'Authentication',
|
|
51
|
+
name: 'authentication',
|
|
52
|
+
type: 'options',
|
|
53
|
+
options: [
|
|
54
|
+
{
|
|
55
|
+
name: 'Body',
|
|
56
|
+
value: 'body',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'Header',
|
|
60
|
+
value: 'header',
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
default: 'header',
|
|
64
|
+
},
|
|
65
|
+
];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.MsGraphOAuth2Api = MsGraphOAuth2Api;
|
|
69
|
+
//# sourceMappingURL=MsGraphOAuth2Api.credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MsGraphOAuth2Api.credentials.js","sourceRoot":"","sources":["../../credentials/MsGraphOAuth2Api.credentials.ts"],"names":[],"mappings":";;;AAKA,MAAa,gBAAgB;IAA7B;QACC,SAAI,GAAG,kBAAkB,CAAC;QAC1B,gBAAW,GAAG,4BAA4B,CAAC;QAC3C,qBAAgB,GAAG,qDAAqD,CAAC;QACzE,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,gEAAgE;gBACzE,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,WAAW;gBACxB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,4DAA4D;gBACrE,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,WAAW;gBACxB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,eAAe;gBAC5B,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,0BAA0B;gBACnC,WAAW,EAAE,2CAA2C;gBACxD,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,gBAAgB;gBAC7B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE;oBACR;wBACC,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE,MAAM;qBACb;oBACD;wBACC,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,QAAQ;qBACf;iBACD;gBACD,OAAO,EAAE,QAAQ;aACjB;SACD,CAAC;IACH,CAAC;CAAA;AA7DD,4CA6DC"}
|
|
@@ -0,0 +1,500 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MsGraph = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
class MsGraph {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.description = {
|
|
8
|
+
displayName: 'Microsoft Graph',
|
|
9
|
+
name: 'msGraph',
|
|
10
|
+
icon: 'file:msgraph.svg',
|
|
11
|
+
group: ['transform'],
|
|
12
|
+
version: 1,
|
|
13
|
+
subtitle: '={{$parameter["method"] + ": " + $parameter["url"]}}',
|
|
14
|
+
description: 'Make requests to Microsoft Graph API with retry handling',
|
|
15
|
+
defaults: {
|
|
16
|
+
name: 'Microsoft Graph',
|
|
17
|
+
},
|
|
18
|
+
// @ts-expect-error - n8n types issue
|
|
19
|
+
inputs: ['main'],
|
|
20
|
+
// @ts-expect-error - n8n types issue
|
|
21
|
+
outputs: ['main'],
|
|
22
|
+
credentials: [
|
|
23
|
+
{
|
|
24
|
+
name: 'msGraphOAuth2Api',
|
|
25
|
+
required: false,
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
properties: [
|
|
29
|
+
{
|
|
30
|
+
displayName: 'Authentication',
|
|
31
|
+
name: 'authentication',
|
|
32
|
+
type: 'options',
|
|
33
|
+
options: [
|
|
34
|
+
{
|
|
35
|
+
name: 'OAuth2 (via Credentials)',
|
|
36
|
+
value: 'oauth2',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Access Token',
|
|
40
|
+
value: 'accessToken',
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
default: 'oauth2',
|
|
44
|
+
description: 'The authentication method to use',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
displayName: 'Access Token',
|
|
48
|
+
name: 'accessToken',
|
|
49
|
+
type: 'string',
|
|
50
|
+
displayOptions: {
|
|
51
|
+
show: {
|
|
52
|
+
authentication: ['accessToken'],
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
default: '',
|
|
56
|
+
description: 'Access token obtained from Microsoft Identity Platform (Azure AD). Can be set via an expression from the result of a previous node.',
|
|
57
|
+
required: true,
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
displayName: 'HTTP Method',
|
|
61
|
+
name: 'method',
|
|
62
|
+
type: 'options',
|
|
63
|
+
options: [
|
|
64
|
+
{
|
|
65
|
+
name: 'DELETE',
|
|
66
|
+
value: 'DELETE',
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: 'GET',
|
|
70
|
+
value: 'GET',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: 'PATCH',
|
|
74
|
+
value: 'PATCH',
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: 'POST',
|
|
78
|
+
value: 'POST',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: 'PUT',
|
|
82
|
+
value: 'PUT',
|
|
83
|
+
},
|
|
84
|
+
],
|
|
85
|
+
default: 'GET',
|
|
86
|
+
description: 'The HTTP method to use for the request',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
displayName: 'URL',
|
|
90
|
+
name: 'url',
|
|
91
|
+
type: 'string',
|
|
92
|
+
default: '',
|
|
93
|
+
placeholder: 'https://graph.microsoft.com/v1.0/me',
|
|
94
|
+
description: 'The URL to make the request to',
|
|
95
|
+
required: true,
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
displayName: 'Headers',
|
|
99
|
+
name: 'headers',
|
|
100
|
+
placeholder: 'Add Header',
|
|
101
|
+
type: 'fixedCollection',
|
|
102
|
+
typeOptions: {
|
|
103
|
+
multipleValues: true,
|
|
104
|
+
},
|
|
105
|
+
default: {},
|
|
106
|
+
options: [
|
|
107
|
+
{
|
|
108
|
+
name: 'parameter',
|
|
109
|
+
displayName: 'Header',
|
|
110
|
+
values: [
|
|
111
|
+
{
|
|
112
|
+
displayName: 'Name',
|
|
113
|
+
name: 'name',
|
|
114
|
+
type: 'string',
|
|
115
|
+
default: '',
|
|
116
|
+
description: 'Name of the header',
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
displayName: 'Value',
|
|
120
|
+
name: 'value',
|
|
121
|
+
type: 'string',
|
|
122
|
+
default: '',
|
|
123
|
+
description: 'Value of the header',
|
|
124
|
+
},
|
|
125
|
+
],
|
|
126
|
+
},
|
|
127
|
+
],
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
displayName: 'Query Parameters',
|
|
131
|
+
name: 'queryParameters',
|
|
132
|
+
placeholder: 'Add Parameter',
|
|
133
|
+
type: 'fixedCollection',
|
|
134
|
+
typeOptions: {
|
|
135
|
+
multipleValues: true,
|
|
136
|
+
},
|
|
137
|
+
default: {},
|
|
138
|
+
options: [
|
|
139
|
+
{
|
|
140
|
+
name: 'parameter',
|
|
141
|
+
displayName: 'Parameter',
|
|
142
|
+
values: [
|
|
143
|
+
{
|
|
144
|
+
displayName: 'Name',
|
|
145
|
+
name: 'name',
|
|
146
|
+
type: 'string',
|
|
147
|
+
default: '',
|
|
148
|
+
description: 'Name of the parameter',
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
displayName: 'Value',
|
|
152
|
+
name: 'value',
|
|
153
|
+
type: 'string',
|
|
154
|
+
default: '',
|
|
155
|
+
description: 'Value of the parameter',
|
|
156
|
+
},
|
|
157
|
+
],
|
|
158
|
+
},
|
|
159
|
+
],
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
displayName: 'Body',
|
|
163
|
+
name: 'body',
|
|
164
|
+
type: 'json',
|
|
165
|
+
displayOptions: {
|
|
166
|
+
show: {
|
|
167
|
+
method: ['PATCH', 'POST', 'PUT'],
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
default: '',
|
|
171
|
+
description: 'Body of the request',
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
displayName: 'Response Format',
|
|
175
|
+
name: 'responseFormat',
|
|
176
|
+
type: 'options',
|
|
177
|
+
options: [
|
|
178
|
+
{
|
|
179
|
+
name: 'JSON',
|
|
180
|
+
value: 'json',
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
name: 'String',
|
|
184
|
+
value: 'string',
|
|
185
|
+
},
|
|
186
|
+
],
|
|
187
|
+
default: 'json',
|
|
188
|
+
description: 'The format in which the data gets returned from the URL',
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
displayName: 'Handle Throttling',
|
|
192
|
+
name: 'handleThrottling',
|
|
193
|
+
type: 'fixedCollection',
|
|
194
|
+
typeOptions: {
|
|
195
|
+
multipleValues: false,
|
|
196
|
+
},
|
|
197
|
+
default: {},
|
|
198
|
+
options: [
|
|
199
|
+
{
|
|
200
|
+
name: 'values',
|
|
201
|
+
displayName: 'Values',
|
|
202
|
+
values: [
|
|
203
|
+
{
|
|
204
|
+
displayName: 'Enable Throttle Handling',
|
|
205
|
+
name: 'enabled',
|
|
206
|
+
type: 'boolean',
|
|
207
|
+
default: true,
|
|
208
|
+
description: 'Whether to handle rate limiting (HTTP 429 responses)',
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
displayName: 'Retry After (Seconds)',
|
|
212
|
+
name: 'retryAfterExpression',
|
|
213
|
+
displayOptions: {
|
|
214
|
+
show: {
|
|
215
|
+
enabled: [true],
|
|
216
|
+
},
|
|
217
|
+
},
|
|
218
|
+
type: 'string',
|
|
219
|
+
default: '={{$response.headers["retry-after"] || 2}}',
|
|
220
|
+
description: 'Expression to determine how long to wait before retry. Access the retry-after header with $response.headers["retry-after"]',
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
displayName: 'Limit Number of Retries',
|
|
224
|
+
name: 'limitRetries',
|
|
225
|
+
displayOptions: {
|
|
226
|
+
show: {
|
|
227
|
+
enabled: [true],
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
type: 'boolean',
|
|
231
|
+
default: true,
|
|
232
|
+
description: 'Whether to limit the number of retry attempts',
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
displayName: 'Maximum Retries',
|
|
236
|
+
name: 'maxRetries',
|
|
237
|
+
displayOptions: {
|
|
238
|
+
show: {
|
|
239
|
+
enabled: [true],
|
|
240
|
+
limitRetries: [true],
|
|
241
|
+
},
|
|
242
|
+
},
|
|
243
|
+
type: 'number',
|
|
244
|
+
default: 5,
|
|
245
|
+
description: 'Maximum number of retries to attempt if rate limited',
|
|
246
|
+
},
|
|
247
|
+
],
|
|
248
|
+
},
|
|
249
|
+
],
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
displayName: 'Error Handling',
|
|
253
|
+
name: 'errorHandling',
|
|
254
|
+
type: 'fixedCollection',
|
|
255
|
+
typeOptions: {
|
|
256
|
+
multipleValues: false,
|
|
257
|
+
},
|
|
258
|
+
default: {},
|
|
259
|
+
options: [
|
|
260
|
+
{
|
|
261
|
+
name: 'values',
|
|
262
|
+
displayName: 'Values',
|
|
263
|
+
values: [
|
|
264
|
+
{
|
|
265
|
+
displayName: 'Continue On Error',
|
|
266
|
+
name: 'continueOnError',
|
|
267
|
+
type: 'boolean',
|
|
268
|
+
default: false,
|
|
269
|
+
description: 'Whether to continue execution even when an error occurs',
|
|
270
|
+
},
|
|
271
|
+
],
|
|
272
|
+
},
|
|
273
|
+
],
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
displayName: 'Options',
|
|
277
|
+
name: 'options',
|
|
278
|
+
type: 'collection',
|
|
279
|
+
placeholder: 'Add Option',
|
|
280
|
+
default: {},
|
|
281
|
+
options: [
|
|
282
|
+
{
|
|
283
|
+
displayName: 'Full Response',
|
|
284
|
+
name: 'fullResponse',
|
|
285
|
+
type: 'boolean',
|
|
286
|
+
default: false,
|
|
287
|
+
description: 'Whether to return the full response data instead of only the body',
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
displayName: 'Timeout',
|
|
291
|
+
name: 'timeout',
|
|
292
|
+
type: 'number',
|
|
293
|
+
default: 10000,
|
|
294
|
+
description: 'Time in ms to wait for the server to send response headers before aborting the request',
|
|
295
|
+
},
|
|
296
|
+
],
|
|
297
|
+
},
|
|
298
|
+
],
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
async execute() {
|
|
302
|
+
var _a, _b, _c;
|
|
303
|
+
const items = this.getInputData();
|
|
304
|
+
const returnItems = [];
|
|
305
|
+
for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
|
|
306
|
+
try {
|
|
307
|
+
// Get authentication parameters
|
|
308
|
+
const authMethod = this.getNodeParameter('authentication', itemIndex, 'oauth2');
|
|
309
|
+
let accessToken;
|
|
310
|
+
if (authMethod === 'oauth2') {
|
|
311
|
+
// Get credentials for MS Graph API
|
|
312
|
+
const credentials = await this.getCredentials('msGraphOAuth2Api');
|
|
313
|
+
accessToken = credentials.access_token;
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
// Get the access token directly from the parameter
|
|
317
|
+
accessToken = this.getNodeParameter('accessToken', itemIndex, '');
|
|
318
|
+
if (!accessToken) {
|
|
319
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Access Token is required for this authentication method', {
|
|
320
|
+
itemIndex,
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
// Get parameters
|
|
325
|
+
const method = this.getNodeParameter('method', itemIndex);
|
|
326
|
+
const url = this.getNodeParameter('url', itemIndex);
|
|
327
|
+
const responseFormat = this.getNodeParameter('responseFormat', itemIndex);
|
|
328
|
+
const options = this.getNodeParameter('options', itemIndex, {});
|
|
329
|
+
// Get throttling options
|
|
330
|
+
const throttleSettings = this.getNodeParameter('handleThrottling.values', itemIndex, {
|
|
331
|
+
enabled: true,
|
|
332
|
+
retryAfterExpression: '={{$response.headers["retry-after"] || 2}}',
|
|
333
|
+
limitRetries: true,
|
|
334
|
+
maxRetries: 5,
|
|
335
|
+
});
|
|
336
|
+
// Get body, headers and query parameters
|
|
337
|
+
let body;
|
|
338
|
+
if (['PATCH', 'POST', 'PUT'].includes(method)) {
|
|
339
|
+
body = this.getNodeParameter('body', itemIndex, {});
|
|
340
|
+
if (body !== '' && typeof body === 'string') {
|
|
341
|
+
// Try to parse the body as JSON
|
|
342
|
+
try {
|
|
343
|
+
body = JSON.parse(body);
|
|
344
|
+
}
|
|
345
|
+
catch {
|
|
346
|
+
// If parsing fails, throw an error
|
|
347
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Body must be a valid JSON', {
|
|
348
|
+
itemIndex,
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
// Get headers
|
|
354
|
+
const headerParameters = this.getNodeParameter('headers', itemIndex, {});
|
|
355
|
+
const headers = {};
|
|
356
|
+
if (headerParameters.parameter) {
|
|
357
|
+
for (const param of headerParameters.parameter) {
|
|
358
|
+
headers[param.name] = param.value;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
// Get query parameters
|
|
362
|
+
const queryParameters = this.getNodeParameter('queryParameters', itemIndex, {});
|
|
363
|
+
const qs = {};
|
|
364
|
+
if (queryParameters.parameter) {
|
|
365
|
+
for (const param of queryParameters.parameter) {
|
|
366
|
+
qs[param.name] = param.value;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
// Add authorization header
|
|
370
|
+
headers.Authorization = `Bearer ${accessToken}`;
|
|
371
|
+
// Add Content-Type header if not present
|
|
372
|
+
if (!headers['Content-Type'] && ['PATCH', 'POST', 'PUT'].includes(method)) {
|
|
373
|
+
headers['Content-Type'] = 'application/json';
|
|
374
|
+
}
|
|
375
|
+
// Add Accept header if not present
|
|
376
|
+
if (!headers.Accept) {
|
|
377
|
+
headers.Accept = 'application/json';
|
|
378
|
+
}
|
|
379
|
+
// Execute the request with retry logic for rate limiting
|
|
380
|
+
let response;
|
|
381
|
+
let retryCount = 0;
|
|
382
|
+
let retryAfter = 0;
|
|
383
|
+
let responseHeaders = {};
|
|
384
|
+
const maxRetries = throttleSettings.limitRetries ? throttleSettings.maxRetries : Infinity;
|
|
385
|
+
while (throttleSettings.enabled && retryCount <= maxRetries) {
|
|
386
|
+
try {
|
|
387
|
+
// If we need to retry, wait for the specified time
|
|
388
|
+
if (retryCount > 0 && retryAfter > 0) {
|
|
389
|
+
this.logger.info(`Rate limited by MS Graph API. Retrying after ${retryAfter} seconds (Attempt ${retryCount}/${maxRetries})`);
|
|
390
|
+
await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
|
|
391
|
+
}
|
|
392
|
+
// Make the request
|
|
393
|
+
const requestOptions = {
|
|
394
|
+
method,
|
|
395
|
+
url,
|
|
396
|
+
headers,
|
|
397
|
+
qs,
|
|
398
|
+
body,
|
|
399
|
+
json: responseFormat === 'json',
|
|
400
|
+
timeout: options.timeout || 10000,
|
|
401
|
+
resolveWithFullResponse: true,
|
|
402
|
+
};
|
|
403
|
+
// Use any instead of the actual type because response.headers is not recognized in n8n types
|
|
404
|
+
const fullResponse = await this.helpers.request(requestOptions);
|
|
405
|
+
response = fullResponse.body;
|
|
406
|
+
responseHeaders = fullResponse.headers || {};
|
|
407
|
+
// No need to retry on success
|
|
408
|
+
break;
|
|
409
|
+
}
|
|
410
|
+
catch (error) {
|
|
411
|
+
responseHeaders = ((_a = error.response) === null || _a === void 0 ? void 0 : _a.headers) || {};
|
|
412
|
+
// Check if this is a rate limiting error (HTTP 429)
|
|
413
|
+
if (error.statusCode === 429 && retryCount < maxRetries) {
|
|
414
|
+
retryCount++;
|
|
415
|
+
// Get the Retry-After header value and compile the expression if provided
|
|
416
|
+
if (throttleSettings.retryAfterExpression) {
|
|
417
|
+
try {
|
|
418
|
+
// Evaluate the expression
|
|
419
|
+
const expressionResult = this.getNodeParameter('handleThrottling.values.retryAfterExpression', itemIndex, 2);
|
|
420
|
+
if (typeof expressionResult === 'number' || (typeof expressionResult === 'string' && !isNaN(Number(expressionResult)))) {
|
|
421
|
+
retryAfter = Number(expressionResult);
|
|
422
|
+
}
|
|
423
|
+
else {
|
|
424
|
+
// Default to exponential backoff if expression doesn't evaluate to a number
|
|
425
|
+
retryAfter = Math.pow(2, retryCount);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
catch {
|
|
429
|
+
// If expression evaluation fails, use fallback
|
|
430
|
+
const headerRetryAfter = parseInt((responseHeaders === null || responseHeaders === void 0 ? void 0 : responseHeaders['retry-after']) || (responseHeaders === null || responseHeaders === void 0 ? void 0 : responseHeaders['Retry-After']) || '0', 10);
|
|
431
|
+
retryAfter = headerRetryAfter || Math.pow(2, retryCount);
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
else {
|
|
435
|
+
// Use header value if no expression is provided
|
|
436
|
+
const headerRetryAfter = parseInt((responseHeaders === null || responseHeaders === void 0 ? void 0 : responseHeaders['retry-after']) || (responseHeaders === null || responseHeaders === void 0 ? void 0 : responseHeaders['Retry-After']) || '0', 10);
|
|
437
|
+
retryAfter = headerRetryAfter || Math.pow(2, retryCount);
|
|
438
|
+
}
|
|
439
|
+
// Continue to the next iteration which will wait and retry
|
|
440
|
+
continue;
|
|
441
|
+
}
|
|
442
|
+
// For other errors or if we've exhausted retries, throw the error
|
|
443
|
+
throw error;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
// Process the response
|
|
447
|
+
let responseData;
|
|
448
|
+
if (responseFormat === 'json') {
|
|
449
|
+
responseData = response;
|
|
450
|
+
if (options.fullResponse === true) {
|
|
451
|
+
responseData = {
|
|
452
|
+
body: response,
|
|
453
|
+
headers: responseHeaders,
|
|
454
|
+
statusCode: 200,
|
|
455
|
+
};
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
else {
|
|
459
|
+
// String
|
|
460
|
+
responseData = typeof response === 'object' ? JSON.stringify(response) : (response || '').toString();
|
|
461
|
+
if (options.fullResponse === true) {
|
|
462
|
+
responseData = {
|
|
463
|
+
body: responseData,
|
|
464
|
+
headers: responseHeaders,
|
|
465
|
+
statusCode: 200,
|
|
466
|
+
};
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
// Return the response data
|
|
470
|
+
const newItem = {
|
|
471
|
+
json: responseData,
|
|
472
|
+
binary: {},
|
|
473
|
+
pairedItem: { item: itemIndex },
|
|
474
|
+
};
|
|
475
|
+
returnItems.push(newItem);
|
|
476
|
+
}
|
|
477
|
+
catch (error) {
|
|
478
|
+
if (this.continueOnFail()) {
|
|
479
|
+
returnItems.push({
|
|
480
|
+
json: {
|
|
481
|
+
error: error.message,
|
|
482
|
+
statusCode: error.statusCode,
|
|
483
|
+
url: this.getNodeParameter('url', itemIndex),
|
|
484
|
+
method: this.getNodeParameter('method', itemIndex),
|
|
485
|
+
headers: ((_b = error.response) === null || _b === void 0 ? void 0 : _b.headers) || {},
|
|
486
|
+
body: ((_c = error.response) === null || _c === void 0 ? void 0 : _c.body) || null,
|
|
487
|
+
},
|
|
488
|
+
binary: {},
|
|
489
|
+
pairedItem: { item: itemIndex },
|
|
490
|
+
});
|
|
491
|
+
continue;
|
|
492
|
+
}
|
|
493
|
+
throw error;
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
return this.prepareOutputData(returnItems);
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
exports.MsGraph = MsGraph;
|
|
500
|
+
//# sourceMappingURL=MsGraph.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MsGraph.node.js","sourceRoot":"","sources":["../../nodes/MsGraph.node.ts"],"names":[],"mappings":"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"}
|
package/index.js
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@advenimuss/n8n-nodes-msgraph",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "n8n node for Microsoft Graph API with retry handling",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"n8n-community-node-package",
|
|
7
|
+
"n8n",
|
|
8
|
+
"microsoft",
|
|
9
|
+
"graph",
|
|
10
|
+
"msgraph"
|
|
11
|
+
],
|
|
12
|
+
"license": "MIT",
|
|
13
|
+
"homepage": "https://n8n.io",
|
|
14
|
+
"author": {
|
|
15
|
+
"name": "advenimuss",
|
|
16
|
+
"email": "cjvautour@gmail.com"
|
|
17
|
+
},
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "https://github.com/advenimuss/n8n-nodes-msgraph.git"
|
|
21
|
+
},
|
|
22
|
+
"main": "index.js",
|
|
23
|
+
"type": "commonjs",
|
|
24
|
+
"scripts": {
|
|
25
|
+
"build": "tsc",
|
|
26
|
+
"dev": "tsc --watch",
|
|
27
|
+
"format": "prettier --write .",
|
|
28
|
+
"lint": "eslint nodes credentials --ext .ts",
|
|
29
|
+
"lintfix": "eslint nodes credentials --ext .ts --fix",
|
|
30
|
+
"prepublishOnly": "npm run build && npm run lint",
|
|
31
|
+
"test": "jest"
|
|
32
|
+
},
|
|
33
|
+
"files": [
|
|
34
|
+
"dist"
|
|
35
|
+
],
|
|
36
|
+
"n8n": {
|
|
37
|
+
"n8nNodesApiVersion": 1,
|
|
38
|
+
"credentials": [
|
|
39
|
+
"dist/credentials/MsGraphOAuth2Api.credentials.js"
|
|
40
|
+
],
|
|
41
|
+
"nodes": [
|
|
42
|
+
"dist/nodes/MsGraph.node.js"
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@types/node": "^18.0.0",
|
|
47
|
+
"@typescript-eslint/eslint-plugin": "^8.26.1",
|
|
48
|
+
"@typescript-eslint/parser": "^8.26.1",
|
|
49
|
+
"eslint": "^8.57.1",
|
|
50
|
+
"eslint-plugin-n8n-nodes-base": "^1.16.1"
|
|
51
|
+
},
|
|
52
|
+
"dependencies": {
|
|
53
|
+
"n8n-core": "^1.0.0",
|
|
54
|
+
"n8n-workflow": "^1.0.0",
|
|
55
|
+
"typescript": "^4.9.0"
|
|
56
|
+
}
|
|
57
|
+
}
|