mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-20 03:12:15 +00:00
feat: Add Outlook Trigger Node (#8656)
Co-authored-by: Jonathan Bennetts <jonathan.bennetts@gmail.com>
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
import { NodeApiError } from 'n8n-workflow';
|
||||
import type { JsonObject, IDataObject, INodeExecutionData, IPollFunctions } from 'n8n-workflow';
|
||||
|
||||
import {
|
||||
downloadAttachments,
|
||||
microsoftApiRequest,
|
||||
microsoftApiRequestAllItems,
|
||||
} from '../v2/transport';
|
||||
|
||||
import { prepareFilterString, simplifyOutputMessages } from '../v2/helpers/utils';
|
||||
|
||||
export async function getPollResponse(
|
||||
this: IPollFunctions,
|
||||
pollStartDate: string,
|
||||
pollEndDate: string,
|
||||
) {
|
||||
let responseData;
|
||||
const qs = {} as IDataObject;
|
||||
try {
|
||||
const filters = this.getNodeParameter('filters', {}) as IDataObject;
|
||||
const options = this.getNodeParameter('options', {}) as IDataObject;
|
||||
const output = this.getNodeParameter('output') as string;
|
||||
if (output === 'fields') {
|
||||
const fields = this.getNodeParameter('fields') as string[];
|
||||
|
||||
if (options.downloadAttachments) {
|
||||
fields.push('hasAttachments');
|
||||
}
|
||||
|
||||
qs.$select = fields.join(',');
|
||||
}
|
||||
|
||||
if (output === 'simple') {
|
||||
qs.$select =
|
||||
'id,conversationId,subject,bodyPreview,from,toRecipients,categories,hasAttachments';
|
||||
}
|
||||
|
||||
const filterString = prepareFilterString({ filters });
|
||||
|
||||
if (filterString) {
|
||||
qs.$filter = filterString;
|
||||
}
|
||||
|
||||
const endpoint = '/messages';
|
||||
if (this.getMode() !== 'manual') {
|
||||
if (qs.$filter) {
|
||||
qs.$filter = `${qs.$filter} and receivedDateTime ge ${pollStartDate} and receivedDateTime lt ${pollEndDate}`;
|
||||
} else {
|
||||
qs.$filter = `receivedDateTime ge ${pollStartDate} and receivedDateTime lt ${pollEndDate}`;
|
||||
}
|
||||
responseData = await microsoftApiRequestAllItems.call(
|
||||
this,
|
||||
'value',
|
||||
'GET',
|
||||
endpoint,
|
||||
undefined,
|
||||
qs,
|
||||
);
|
||||
} else {
|
||||
qs.$top = 1;
|
||||
responseData = await microsoftApiRequest.call(this, 'GET', endpoint, undefined, qs);
|
||||
responseData = responseData.value;
|
||||
}
|
||||
|
||||
if (output === 'simple') {
|
||||
responseData = simplifyOutputMessages(responseData as IDataObject[]);
|
||||
}
|
||||
|
||||
let executionData: INodeExecutionData[] = [];
|
||||
|
||||
if (options.downloadAttachments) {
|
||||
const prefix = (options.attachmentsPrefix as string) || 'attachment_';
|
||||
executionData = await downloadAttachments.call(this, responseData as IDataObject[], prefix);
|
||||
} else {
|
||||
executionData = this.helpers.returnJsonArray(responseData as IDataObject[]);
|
||||
}
|
||||
|
||||
return executionData;
|
||||
} catch (error) {
|
||||
throw new NodeApiError(this.getNode(), error as JsonObject, {
|
||||
message: error.message,
|
||||
description: error.description,
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user