mirror of
https://github.com/n8n-io/n8n.git
synced 2024-12-29 06:29:42 -08:00
85 lines
2.7 KiB
TypeScript
85 lines
2.7 KiB
TypeScript
|
import type { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
|
||
|
import { NodeApiError, NodeOperationError } from 'n8n-workflow';
|
||
|
|
||
|
import type { MicrosoftOutlook } from './node.type';
|
||
|
import * as calendar from './calendar';
|
||
|
import * as contact from './contact';
|
||
|
import * as draft from './draft';
|
||
|
import * as event from './event';
|
||
|
import * as folder from './folder';
|
||
|
import * as folderMessage from './folderMessage';
|
||
|
import * as message from './message';
|
||
|
import * as messageAttachment from './messageAttachment';
|
||
|
|
||
|
export async function router(this: IExecuteFunctions) {
|
||
|
const items = this.getInputData();
|
||
|
const returnData: INodeExecutionData[] = [];
|
||
|
|
||
|
const resource = this.getNodeParameter<MicrosoftOutlook>('resource', 0) as string;
|
||
|
const operation = this.getNodeParameter('operation', 0);
|
||
|
|
||
|
let responseData;
|
||
|
|
||
|
const microsoftOutlook = {
|
||
|
resource,
|
||
|
operation,
|
||
|
} as MicrosoftOutlook;
|
||
|
|
||
|
for (let i = 0; i < items.length; i++) {
|
||
|
try {
|
||
|
switch (microsoftOutlook.resource) {
|
||
|
case 'calendar':
|
||
|
responseData = await calendar[microsoftOutlook.operation].execute.call(this, i);
|
||
|
break;
|
||
|
case 'contact':
|
||
|
responseData = await contact[microsoftOutlook.operation].execute.call(this, i);
|
||
|
break;
|
||
|
case 'draft':
|
||
|
responseData = await draft[microsoftOutlook.operation].execute.call(this, i, items);
|
||
|
break;
|
||
|
case 'event':
|
||
|
responseData = await event[microsoftOutlook.operation].execute.call(this, i);
|
||
|
break;
|
||
|
case 'folder':
|
||
|
responseData = await folder[microsoftOutlook.operation].execute.call(this, i);
|
||
|
break;
|
||
|
case 'folderMessage':
|
||
|
responseData = await folderMessage[microsoftOutlook.operation].execute.call(this, i);
|
||
|
break;
|
||
|
case 'message':
|
||
|
responseData = await message[microsoftOutlook.operation].execute.call(this, i, items);
|
||
|
break;
|
||
|
case 'messageAttachment':
|
||
|
responseData = await messageAttachment[microsoftOutlook.operation].execute.call(
|
||
|
this,
|
||
|
i,
|
||
|
items,
|
||
|
);
|
||
|
break;
|
||
|
default:
|
||
|
throw new NodeOperationError(this.getNode(), `The resource "${resource}" is not known`);
|
||
|
}
|
||
|
|
||
|
returnData.push(...responseData);
|
||
|
} catch (error) {
|
||
|
if (this.continueOnFail()) {
|
||
|
const executionErrorData = this.helpers.constructExecutionMetaData(
|
||
|
this.helpers.returnJsonArray({ error: error.message }),
|
||
|
{ itemData: { item: i } },
|
||
|
);
|
||
|
returnData.push(...executionErrorData);
|
||
|
continue;
|
||
|
}
|
||
|
//NodeApiError will be missing the itemIndex, add it
|
||
|
if (error instanceof NodeApiError && error?.context?.itemIndex === undefined) {
|
||
|
if (error.context === undefined) {
|
||
|
error.context = {};
|
||
|
}
|
||
|
error.context.itemIndex = i;
|
||
|
}
|
||
|
throw error;
|
||
|
}
|
||
|
}
|
||
|
return [returnData];
|
||
|
}
|