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
JavaScript
;
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