UNPKG

n8n-nodes-dataforseo

Version:

DataForSEO is an SEO and marketing data provider, empowering businesses with invaluable insights via APIs and databases.

168 lines 7.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DataForSeoLabsApi = void 0; const n8n_workflow_1 = require("n8n-workflow"); const google_1 = require("../DataForSeoLabsApi/resources/google"); const google_2 = require("./execute/google"); const amazon_1 = require("./execute/amazon"); const amazon_2 = require("./resources/amazon"); const bing_1 = require("./execute/bing"); const bing_2 = require("./resources/bing"); const google_play_1 = require("./execute/google_play"); const google_play_2 = require("./resources/google_play"); const app_store_1 = require("./resources/app_store"); const app_store_2 = require("./execute/app_store"); class DataForSeoLabsApi { constructor() { this.description = { displayName: 'DataForSEO Labs API', name: 'dataForSeoLabsApi', icon: 'file:dataforseo.svg', group: ['transform'], version: 1, subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', description: 'DataForSEO', defaults: { name: 'DataForSeo Labs API', }, inputs: ["main"], outputs: ["main"], credentials: [ { name: 'dataForSeoApi', required: true, }, ], requestDefaults: { method: 'POST', baseURL: 'https://api.dataforseo.com/v3', headers: { 'Content-Type': 'application/json', }, }, properties: [ { displayName: 'Resource', name: 'resource', type: 'options', noDataExpression: true, options: [ { name: 'Google', value: 'google', }, { name: 'Amazon', value: 'amazon', }, { name: 'Bing', value: 'bing', }, { name: 'Google Play', value: 'google_play', }, { name: 'App Store', value: 'app_store', } ], default: 'google', }, ...google_1.GoogleOperations, ...amazon_2.AmazonOperations, ...bing_2.BingOperations, ...google_play_2.GooglePlayOperations, ...app_store_1.AppStoreOperations ], }; } async execute() { let responseData = []; const resource = this.getNodeParameter('resource', 0); const operation = this.getNodeParameter('operation', 0); const mapping = { 'google': { 'get-keywords-for-site': google_2.getKeywordsForSite, 'get-related-keywords': google_2.getRelatedKeywords, 'get-keyword-suggestions': google_2.getKeywordSuggestions, 'get-keyword-ideas': google_2.getKeywordIdeas, 'get-keyword-difficulty': google_2.getKeywordDifficulty, 'get-search-intent': google_2.getSearchIntent, 'get-keyword-overview': google_2.getKeywordOverview, 'get-historical-keyword-data': google_2.getHistoricalKeywordData, 'get-categories-for-domain': google_2.getCategoriesForDomain, 'get-categories-for-keywords': google_2.getCategoriesForKeywords, 'get-keywords-for-categories': google_2.getKeywordsForCategories, 'get-domain-metrics-by-categories': google_2.getDomainMetricsByCtaegories, 'get-top-searches': google_2.getTopSearches, 'get-serp-competitors': google_2.getSerpCompetitors, 'get-ranked-keywords': google_2.getRankedKeywords, 'get-competitors-domain': google_2.getCompetitorsDomain, 'get-domain-intersection': google_2.getDomainIntersection, 'get-subdomains': google_2.getSubdomains, 'get-relevant-pages': google_2.getRelevantPages, 'get-domain-rank-overview': google_2.getDomainRankOverview, 'get-historical-serps': google_2.getHistoricalSerps, 'get-historical-rank-overview': google_2.getHistoricalRankOverview, 'get-page-intersection': google_2.getPageIntersection, 'get-bulk-traffic-estimation': google_2.getBulkTrafficEstimation, 'get-historical-bulk-traffic-estimation': google_2.getHistoricalBulkTrafficEstimation }, 'amazon': { 'get-bulk-search-volume': amazon_1.getBulkSearchVolume, 'get-amazon-related-keywords': amazon_1.getAmazonRelatedKeywords, 'get-amazon-ranked-keywords': amazon_1.getAmazonRankedKeywords, 'get-product-rank-overview': amazon_1.getProductRankOverview, 'get-product-competitors': amazon_1.getProductCompetitors, 'get-product-keyword-intersections': amazon_1.getProductKeywordIntersections }, 'bing': { 'get-bing-bulk-keyword-difficulty': bing_1.getBingBulkKeywordDifficulty, 'get-bing-bulk-traffic-estimation': bing_1.getBingBulkTrafficEstimation, 'get-bing-competitors-domain': bing_1.getBingCompetitorsDomain, 'get-bing-domain-intersection': bing_1.getBingDomainIntersection, 'get-bing-domain-rank-overview': bing_1.getBingDomainRankOverview, 'get-bing-page-intersection': bing_1.getBingPageIntersection, 'get-bing-related-keywords': bing_1.getBingRelatedKeywords, 'get-bing-relevant-pages': bing_1.getBingRelevantPages, 'get-bing-serp-competitors': bing_1.getBingSerpCompetitors, 'get-bing-subdomains': bing_1.getBingSubdomains }, 'google_play': { 'get-google-play-bulk-app-metrics': google_play_1.getGooglePlayBulkAppMetrics, 'get-google-play-keywords-for-app': google_play_1.getGooglePlayKeywordsForApp, 'get-google-play-app-competitors': google_play_1.getGooglePlayAppCompetitors, 'get-google-play-app-intersection': google_play_1.getGooglePlayAppIntersection }, 'app_store': { 'get-app-store-bulk-app-metrics': app_store_2.getAppStoreBulkAppMetrics, 'get-app-store-keywords-for-app': app_store_2.getAppStoreKeywordsForApp, 'get-app-store-app-competitors': app_store_2.getAppStoreAppCompetitors, 'get-app-store-app-intersection': app_store_2.getAppStoreAppIntersection } }; const fn = mapping[resource][operation]; if (!fn) { throw new n8n_workflow_1.NodeOperationError(this.getNode(), "Something went wrong"); } try { const items = this.getInputData(); for (let i = 0; i < items.length; i++) { responseData.push(await fn(this, i)); } } catch (e) { if (e instanceof n8n_workflow_1.NodeOperationError) { throw e; } else { throw new n8n_workflow_1.NodeOperationError(this.getNode(), "Something went wrong"); } } return [this.helpers.returnJsonArray(responseData)]; } } exports.DataForSeoLabsApi = DataForSeoLabsApi; //# sourceMappingURL=DataForSeoLabsApi.node.js.map