n8n-nodes-dataforseo
Version:
DataForSEO is an SEO and marketing data provider, empowering businesses with invaluable insights via APIs and databases.
107 lines • 5.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getBusinessListings = getBusinessListings;
exports.getBusinessListingsCategoriesAggregation = getBusinessListingsCategoriesAggregation;
exports.getGoogleReviews = getGoogleReviews;
const n8n_workflow_1 = require("n8n-workflow");
const generalFunctions_1 = require("../../../functions/generalFunctions");
const dataForSeoRequest_1 = require("../../../functions/dataForSeoRequest");
async function getBusinessListings(ef, i) {
const filters = ef.getNodeParameter('filters', i);
let parsedFilters = [];
try {
parsedFilters = (0, generalFunctions_1.parseFilters)(filters);
}
catch (e) {
throw new n8n_workflow_1.NodeOperationError(ef.getNode(), "Invalid Filters value");
}
const categories = ef.getNodeParameter('categories', i);
const parsedCategories = (0, generalFunctions_1.parseMultiOptionItems)(categories);
if (parsedCategories.length > 10) {
throw new n8n_workflow_1.NodeOperationError(ef.getNode(), "You can set no more than 10 categories");
}
const orderBy = ef.getNodeParameter('order_by', i);
if (orderBy.length > 3) {
throw new n8n_workflow_1.NodeOperationError(ef.getNode(), "You can set no more than three sorting rules");
}
const params = {
url: '/business_data/business_listings/search/live',
body: [{
categories: parsedCategories.length ? parsedCategories : null,
description: ef.getNodeParameter('description', i) || null,
title: ef.getNodeParameter('title', i) || null,
is_claimed: ef.getNodeParameter('is_claimed', i),
location_coordinate: ef.getNodeParameter('location_coordinate', i) || null,
filters: parsedFilters.length ? parsedFilters : null,
order_by: orderBy.length ? orderBy : null,
limit: ef.getNodeParameter('limit', i) || null,
offset: ef.getNodeParameter('offset', i) || null,
}]
};
return (0, dataForSeoRequest_1.dataForSeoRequest)(ef, params);
}
async function getBusinessListingsCategoriesAggregation(ef, i) {
const filters = ef.getNodeParameter('initial_dataset_filters', i);
let parsedFilters = [];
try {
parsedFilters = (0, generalFunctions_1.parseFilters)(filters);
}
catch (e) {
throw new n8n_workflow_1.NodeOperationError(ef.getNode(), "Invalid Initial Dataset Filters value");
}
const categories = ef.getNodeParameter('categories', i);
const parsedCategories = (0, generalFunctions_1.parseMultiOptionItems)(categories);
if (parsedCategories.length > 10) {
throw new n8n_workflow_1.NodeOperationError(ef.getNode(), "You can set no more than 10 categories");
}
const params = {
url: '/business_data/business_listings/categories_aggregation/live',
body: [{
categories: parsedCategories.length ? parsedCategories : null,
description: ef.getNodeParameter('description', i) || null,
title: ef.getNodeParameter('title', i) || null,
is_claimed: ef.getNodeParameter('is_claimed', i),
location_coordinate: ef.getNodeParameter('location_coordinate', i) || null,
initial_dataset_filters: parsedFilters.length ? parsedFilters : null,
internal_list_limit: ef.getNodeParameter('internal_list_limit', i) || null,
limit: ef.getNodeParameter('limit', i) || null,
offset: ef.getNodeParameter('offset', i) || null,
}]
};
return (0, dataForSeoRequest_1.dataForSeoRequest)(ef, params);
}
async function getGoogleReviews(ef, i) {
const params = {
url: '/business_data/google/reviews/task_post',
body: [{
keyword: ef.getNodeParameter('search_by', i) == 'keyword' ? ef.getNodeParameter('keyword', i) : null,
cid: ef.getNodeParameter('search_by', i) == 'cid' ? ef.getNodeParameter('keyword', i) : null,
place_id: ef.getNodeParameter('search_by', i) == 'place_id' ? ef.getNodeParameter('keyword', i) : null,
task_priority: ef.getNodeParameter('task_priority', i),
location_name: ef.getNodeParameter('location_name', i),
language_name: ef.getNodeParameter('language_name', i),
depth: ef.getNodeParameter('depth', i) || null,
sort_by: ef.getNodeParameter('sort_by', i) || null,
}]
};
let responseData = await (0, dataForSeoRequest_1.dataForSeoRequest)(ef, params);
const taskId = responseData['tasks'][0]['id'];
if (taskId) {
const taskOptions = {
method: 'GET',
url: '/business_data/google/reviews/task_get/' + taskId,
};
let responseReceived = false;
let j = 0;
let statusCode;
while (j < 100 || !responseReceived) {
(0, n8n_workflow_1.sleep)(200);
responseData = await (0, dataForSeoRequest_1.dataForSeoRequest)(ef, taskOptions);
statusCode = responseData['tasks'][0]['status_code'];
responseReceived = statusCode != 40601 && statusCode != 40602 && statusCode != 20100;
j++;
}
}
return responseData;
}
//# sourceMappingURL=business_data.js.map