n8n-nodes-instantly-dev
Version:
n8n community node for Instantly API v2 - TESTING VERSION with Email Management operations
46 lines (39 loc) • 1.7 kB
JavaScript
import { IExecuteFunctions } from 'n8n-workflow';
import { instantlyApiRequest } from '../../generic.functions';
import { getCampaignId } from '../functions/resourceLocatorHelpers';
import { formatDateForApi } from '../functions/dateHelpers';
import { IAnalyticsParams } from '../types/common';
/**
* Analytics operations handler
*/
export class AnalyticsOperations {
/**
* Get campaign analytics with date filtering
*/
static async getCampaignAnalytics(context: IExecuteFunctions, itemIndex: number): Promise<any> {
const returnAll = context.getNodeParameter('returnAll', itemIndex, false) as boolean;
// Get date parameters and format them for the API
const startDateInput = context.getNodeParameter('startDate', itemIndex, '');
const endDateInput = context.getNodeParameter('endDate', itemIndex, '');
// Build query parameters object
const queryParams: any = {};
// Add date parameters if provided, using the robust date formatter
const formattedStartDate = formatDateForApi(startDateInput);
const formattedEndDate = formatDateForApi(endDateInput);
if (formattedStartDate) {
queryParams.start_date = formattedStartDate;
}
if (formattedEndDate) {
queryParams.end_date = formattedEndDate;
}
if (returnAll) {
// Get analytics for all campaigns with date filtering
return await instantlyApiRequest.call(context, 'GET', '/api/v2/campaigns/analytics', {}, queryParams);
} else {
// Get analytics for specific campaign with date filtering
const campaignId = getCampaignId(context, itemIndex);
queryParams.id = campaignId;
return await instantlyApiRequest.call(context, 'GET', '/api/v2/campaigns/analytics', {}, queryParams);
}
}
}