UNPKG

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
"use strict"; 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