UNPKG

@kadam-net/n8n-nodes-kadam

Version:

Kadam node for n8n to manage campaigns, creatives, and more.

117 lines 6.6 kB
"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