@kadam-net/n8n-nodes-kadam
Version:
Kadam node for n8n to manage campaigns, creatives, and more.
117 lines • 6.6 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getCampaignStats = getCampaignStats;
exports.getPlacementStats = getPlacementStats;
exports.updatePlacementMultiplier = updatePlacementMultiplier;
exports.getCreativeStatsByCampaignIds = getCreativeStatsByCampaignIds;
exports.getCreativeStatsByCreativeIds = getCreativeStatsByCreativeIds;
const n8n_workflow_1 = require("n8n-workflow");
const utils_1 = require("./utils");
const utils_helpers_1 = require("./utils.helpers");
async function getCampaignStats(i, baseUrl, headers, appId) {
const campaignsRaw = this.getNodeParameter('campaigns', i);
const campaignsFormatted = Array.isArray(campaignsRaw) ? campaignsRaw.join(',') : campaignsRaw;
if (!campaignsFormatted) {
throw new Error('Campaigns parameter is empty. Please select at least one campaign.');
}
const outputFieldsRaw = this.getNodeParameter('outputFields', i, '');
const params = {
app_id: appId,
client_id: appId,
campaigns: campaignsFormatted,
group: this.getNodeParameter('group', i),
date_from: this.getNodeParameter('dateFrom', i),
date_to: this.getNodeParameter('dateTo', i),
sort: this.getNodeParameter('sort', i, null),
};
this.logger.debug('Campaign Stats params:', params);
const fullResponseArray = await utils_1.fetchAll.call(this, `${baseUrl}/ads.stats.campaign.get`, headers, params);
const dataItems = (0, utils_helpers_1.extractResponseItems)(fullResponseArray);
return (0, utils_helpers_1.processOutputFields)(dataItems, outputFieldsRaw);
}
async function getPlacementStats(i, baseUrl, headers, appId) {
const campaignsRaw = this.getNodeParameter('campaigns', i);
const campaignsFormatted = Array.isArray(campaignsRaw) ? campaignsRaw.join(',') : campaignsRaw;
if (!campaignsFormatted) {
throw new Error('Campaigns parameter is empty. Please select at least one campaign.');
}
const params = {
app_id: appId,
client_id: appId,
campaigns: campaignsFormatted,
date_from: this.getNodeParameter('dateFrom', i),
date_to: this.getNodeParameter('dateTo', i),
sort: this.getNodeParameter('sort', i, null),
};
this.logger.debug('Placement Stats params:', params);
const outputFieldsRaw = this.getNodeParameter('outputFields', i, '');
const fullResponseArray = await utils_1.fetchAll.call(this, `${baseUrl}/ads.stats.campaign.placement.get`, headers, params);
const dataItems = (0, utils_helpers_1.extractResponseItems)(fullResponseArray);
return (0, utils_helpers_1.processOutputFields)(dataItems, outputFieldsRaw);
}
async function updatePlacementMultiplier(i, baseUrl, headers, appId) {
const campaignId = this.getNodeParameter('campaignId', i);
const multiplier = this.getNodeParameter('multiplier', i, 1);
const placement = this.getNodeParameter('placement', i);
if (!campaignId || campaignId.trim() === '') {
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Campaign ID parameter cannot be empty for Update Placement Multiplier.', { itemIndex: i });
}
if (!placement || placement.trim() === '') {
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Placement ID parameter cannot be empty for Update Placement Multiplier.', { itemIndex: i });
}
const formattedMultiplier = `x${multiplier}`;
const params = {
app_id: appId,
campaign_id: campaignId.trim(),
multiplier: formattedMultiplier,
placement: placement.trim(),
};
const endpoint = `${baseUrl}/ads.stats.campaign.placement.put`;
const urlWithParams = `${endpoint}?app_id=${encodeURIComponent(params.app_id)}&campaign_id=${encodeURIComponent(params.campaign_id)}&multiplier=${encodeURIComponent(params.multiplier)}&placement=${encodeURIComponent(params.placement)}`;
this.logger.debug(`Calling makeApiRequest (GET) for updatePlacementMultiplier with URL: ${urlWithParams}`);
this.logger.debug(`Headers being sent: ${JSON.stringify(headers)}`);
const response = await utils_1.makeApiRequest.call(this, 'get', urlWithParams, headers, undefined);
const outputFieldsRaw = this.getNodeParameter('outputFields', i, '');
const responseData = Array.isArray(response) ? response : [response];
return (0, utils_helpers_1.processOutputFields)(responseData, outputFieldsRaw);
}
async function getCreativeStatsByCampaignIds(i, baseUrl, headers, appId) {
const campaignIdsArray = this.getNodeParameter('campaigns', i, []);
if (campaignIdsArray.length === 0) {
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Campaign IDs parameter cannot be empty for this operation.', { itemIndex: i });
}
const campaignsString = campaignIdsArray.join(',');
const params = {
app_id: appId,
client_id: appId,
campaigns: campaignsString,
group: this.getNodeParameter('group', i),
date_from: this.getNodeParameter('dateFrom', i),
date_to: this.getNodeParameter('dateTo', i),
sort: this.getNodeParameter('sort', i, null),
};
const outputFieldsRaw = this.getNodeParameter('outputFields', i, '');
const fullResponseArray = await utils_1.fetchAll.call(this, `${baseUrl}/ads.stats.creative.get`, headers, params);
const dataItems = (0, utils_helpers_1.extractResponseItems)(fullResponseArray);
return (0, utils_helpers_1.processOutputFields)(dataItems, outputFieldsRaw);
}
async function getCreativeStatsByCreativeIds(i, baseUrl, headers, appId) {
const creativesString = this.getNodeParameter('creatives', i, '');
if (!creativesString || creativesString.trim() === '') {
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Creatives parameter cannot be empty for this operation.', { itemIndex: i });
}
const params = {
app_id: appId,
client_id: appId,
creatives: creativesString.trim(),
group: this.getNodeParameter('group', i),
date_from: this.getNodeParameter('dateFrom', i),
date_to: this.getNodeParameter('dateTo', i),
sort: this.getNodeParameter('sort', i, null),
};
const outputFieldsRaw = this.getNodeParameter('outputFields', i, '');
const fullResponseArray = await utils_1.fetchAll.call(this, `${baseUrl}/ads.stats.creative.get`, headers, params);
const dataItems = (0, utils_helpers_1.extractResponseItems)(fullResponseArray);
return (0, utils_helpers_1.processOutputFields)(dataItems, outputFieldsRaw);
}
//# sourceMappingURL=stats.js.map