n8n-nodes-linkedin-scraper 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -441,6 +441,14 @@ class LinkedinScraper {
|
|
|
441
441
|
}
|
|
442
442
|
if (resource === 'job' && operation === 'details') {
|
|
443
443
|
const jobUrl = this.getNodeParameter('jobUrl', itemIndex);
|
|
444
|
+
// Validate URL - skip if not a valid URL
|
|
445
|
+
if (!jobUrl || !jobUrl.startsWith('http')) {
|
|
446
|
+
returnData.push({
|
|
447
|
+
success: false,
|
|
448
|
+
error: `Invalid job URL: ${jobUrl || 'empty'}`,
|
|
449
|
+
});
|
|
450
|
+
continue;
|
|
451
|
+
}
|
|
444
452
|
const response = await this.helpers.request({
|
|
445
453
|
method: 'POST',
|
|
446
454
|
url: `${scraperUrl}/jobs/details`,
|
|
@@ -459,6 +467,15 @@ class LinkedinScraper {
|
|
|
459
467
|
}
|
|
460
468
|
if (resource === 'company' && operation === 'followers') {
|
|
461
469
|
const companyUrl = this.getNodeParameter('companyUrl', itemIndex);
|
|
470
|
+
// Validate URL - skip if not a valid URL
|
|
471
|
+
if (!companyUrl || !companyUrl.startsWith('http')) {
|
|
472
|
+
returnData.push({
|
|
473
|
+
follower_count: 0,
|
|
474
|
+
source: 'skipped',
|
|
475
|
+
error: `Invalid company URL: ${companyUrl || 'empty'}`,
|
|
476
|
+
});
|
|
477
|
+
continue;
|
|
478
|
+
}
|
|
462
479
|
const response = await this.helpers.request({
|
|
463
480
|
method: 'POST',
|
|
464
481
|
url: `${scraperUrl}/companies/followers`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../nodes/LinkedinScraper/LinkedinScraper.node.ts"],"names":[],"mappings":"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","file":"LinkedinScraper.node.js","sourcesContent":["/**\n * Author: Marco Visin\n * Date: 2025-12-22\n * LinkedIn Scraper n8n node\n * Interacts with the LinkedIn scraper microservice\n * Uses the same InNotes API credentials for authentication\n */\n\nimport {\n\tIDataObject,\n\tIExecuteFunctions,\n\tINodeExecutionData,\n\tINodeType,\n\tINodeTypeDescription,\n\tNodeApiError,\n\tNodeConnectionType,\n} from 'n8n-workflow';\n\nfunction splitCommaSeparated(value: string): string[] {\n\treturn value\n\t\t.split(',')\n\t\t.map((entry) => entry.trim())\n\t\t.filter((entry) => entry.length > 0);\n}\n\nexport class LinkedinScraper implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'LinkedIn Scraper Service',\n\t\tname: 'linkedinScraper',\n\t\tgroup: ['transform'],\n\t\tversion: 1,\n\t\tdescription: 'Interact with the LinkedIn scraper microservice',\n\t\tsubtitle: '={{$parameter[\"operation\"] + \": \" + $parameter[\"resource\"]}}',\n\t\ticon: 'file:logo.svg',\n\t\tdefaults: {\n\t\t\tname: 'LinkedIn Scraper',\n\t\t},\n\t\tinputs: [NodeConnectionType.Main],\n\t\toutputs: [NodeConnectionType.Main],\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\t// Reuse the same InNotes API credentials\n\t\t\t\tname: 'inNotesApi',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t\tproperties: [\n\t\t\t// Scraper service URL\n\t\t\t{\n\t\t\t\tdisplayName: 'Scraper Service URL',\n\t\t\t\tname: 'scraperUrl',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: 'https://scraper.innotes.me',\n\t\t\t\tdescription: 'Base URL of the LinkedIn scraper service',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t// Resource selection\n\t\t\t{\n\t\t\t\tdisplayName: 'Resource',\n\t\t\t\tname: 'resource',\n\t\t\t\ttype: 'options',\n\t\t\t\tnoDataExpression: true,\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Session',\n\t\t\t\t\t\tvalue: 'session',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Jobs',\n\t\t\t\t\t\tvalue: 'jobs',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Job',\n\t\t\t\t\t\tvalue: 'job',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Company',\n\t\t\t\t\t\tvalue: 'company',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'jobs',\n\t\t\t},\n\t\t\t// Session operations\n\t\t\t{\n\t\t\t\tdisplayName: 'Operation',\n\t\t\t\tname: 'operation',\n\t\t\t\ttype: 'options',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['session'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Login',\n\t\t\t\t\t\tvalue: 'login',\n\t\t\t\t\t\taction: 'Login to LinkedIn and fetch cookies',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'login',\n\t\t\t},\n\t\t\t// Jobs operations\n\t\t\t{\n\t\t\t\tdisplayName: 'Operation',\n\t\t\t\tname: 'operation',\n\t\t\t\ttype: 'options',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['jobs'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Search',\n\t\t\t\t\t\tvalue: 'search',\n\t\t\t\t\t\taction: 'Search for jobs on LinkedIn and jobs.ch',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'search',\n\t\t\t},\n\t\t\t// Job operations\n\t\t\t{\n\t\t\t\tdisplayName: 'Operation',\n\t\t\t\tname: 'operation',\n\t\t\t\ttype: 'options',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['job'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Details',\n\t\t\t\t\t\tvalue: 'details',\n\t\t\t\t\t\taction: 'Fetch job details',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'details',\n\t\t\t},\n\t\t\t// Company operations\n\t\t\t{\n\t\t\t\tdisplayName: 'Operation',\n\t\t\t\tname: 'operation',\n\t\t\t\ttype: 'options',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['company'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Followers',\n\t\t\t\t\t\tvalue: 'followers',\n\t\t\t\t\t\taction: 'Fetch company follower count',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'followers',\n\t\t\t},\n\t\t\t// LinkedIn credentials for login\n\t\t\t{\n\t\t\t\tdisplayName: 'LinkedIn Email',\n\t\t\t\tname: 'linkedinEmail',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tplaceholder: 'user@example.com',\n\t\t\t\tdescription: 'LinkedIn account email',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['session'],\n\t\t\t\t\t\toperation: ['login'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'LinkedIn Password',\n\t\t\t\tname: 'linkedinPassword',\n\t\t\t\ttype: 'string',\n\t\t\t\ttypeOptions: {\n\t\t\t\t\tpassword: true,\n\t\t\t\t},\n\t\t\t\tdefault: '',\n\t\t\t\tdescription: 'LinkedIn account password',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['session'],\n\t\t\t\t\t\toperation: ['login'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t// Jobs search parameters\n\t\t\t{\n\t\t\t\tdisplayName: 'Job Titles',\n\t\t\t\tname: 'jobTitles',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tplaceholder: 'Software Engineer, Developer',\n\t\t\t\tdescription: 'Comma-separated list of job titles to search for',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['jobs'],\n\t\t\t\t\t\toperation: ['search'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Locations',\n\t\t\t\tname: 'locations',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tplaceholder: 'Zurich, Remote',\n\t\t\t\tdescription: 'Comma-separated list of locations to search in',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['jobs'],\n\t\t\t\t\t\toperation: ['search'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'LinkedIn Email',\n\t\t\t\tname: 'linkedinEmailSearch',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tplaceholder: 'user@example.com',\n\t\t\t\tdescription: 'LinkedIn account email for authentication',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['jobs'],\n\t\t\t\t\t\toperation: ['search'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'LinkedIn Password',\n\t\t\t\tname: 'linkedinPasswordSearch',\n\t\t\t\ttype: 'string',\n\t\t\t\ttypeOptions: {\n\t\t\t\t\tpassword: true,\n\t\t\t\t},\n\t\t\t\tdefault: '',\n\t\t\t\tdescription: 'LinkedIn account password',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['jobs'],\n\t\t\t\t\t\toperation: ['search'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Max Results',\n\t\t\t\tname: 'maxResults',\n\t\t\t\ttype: 'number',\n\t\t\t\tdefault: 500,\n\t\t\t\ttypeOptions: {\n\t\t\t\t\tminValue: 1,\n\t\t\t\t\tmaxValue: 2000,\n\t\t\t\t},\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['jobs'],\n\t\t\t\t\t\toperation: ['search'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Include jobs.ch',\n\t\t\t\tname: 'includeJobsCh',\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: true,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['jobs'],\n\t\t\t\t\t\toperation: ['search'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Company Blacklist',\n\t\t\t\tname: 'companyBlacklist',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tplaceholder: 'Company A, Company B',\n\t\t\t\tdescription: 'Comma-separated list of companies to exclude',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['jobs'],\n\t\t\t\t\t\toperation: ['search'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Keyword Blacklist',\n\t\t\t\tname: 'keywordBlacklist',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tplaceholder: 'Senior, Lead',\n\t\t\t\tdescription: 'Comma-separated list of keywords to exclude from job titles',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['jobs'],\n\t\t\t\t\t\toperation: ['search'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t// Job details parameters\n\t\t\t{\n\t\t\t\tdisplayName: 'Job URL',\n\t\t\t\tname: 'jobUrl',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tdescription: 'LinkedIn or jobs.ch job URL',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['job'],\n\t\t\t\t\t\toperation: ['details'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t// Company parameters\n\t\t\t{\n\t\t\t\tdisplayName: 'Company URL',\n\t\t\t\tname: 'companyUrl',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tdescription: 'LinkedIn company URL',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['company'],\n\t\t\t\t\t\toperation: ['followers'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t};\n\n\tasync execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {\n\t\tconst items = this.getInputData();\n\t\tconst returnData: IDataObject[] = [];\n\n\t\t// Get InNotes API credentials (reused for scraper authentication)\n\t\tconst credentials = (await this.getCredentials('inNotesApi')) as IDataObject | null;\n\n\t\tif (!credentials) {\n\t\t\tthrow new NodeApiError(this.getNode(), {\n\t\t\t\tmessage: 'InNotes API credentials are missing',\n\t\t\t});\n\t\t}\n\n\t\t// Get the Bearer token from credentials\n\t\tconst authMethod = credentials.authMethod as string;\n\t\tlet bearerToken: string | undefined;\n\n\t\tif (authMethod === 'token') {\n\t\t\tbearerToken = credentials.token as string;\n\t\t} else {\n\t\t\tthrow new NodeApiError(this.getNode(), {\n\t\t\t\tmessage: 'LinkedIn Scraper requires Bearer token authentication. Please update your InNotes API credentials to use Bearer Token.',\n\t\t\t});\n\t\t}\n\n\t\tif (!bearerToken) {\n\t\t\tthrow new NodeApiError(this.getNode(), {\n\t\t\t\tmessage: 'Bearer token is missing from InNotes API credentials',\n\t\t\t});\n\t\t}\n\n\t\tfor (let itemIndex = 0; itemIndex < items.length; itemIndex++) {\n\t\t\tconst scraperUrl = (this.getNodeParameter('scraperUrl', itemIndex) as string).replace(/\\/+$/, '');\n\t\t\tconst resource = this.getNodeParameter('resource', itemIndex) as string;\n\t\t\tconst operation = this.getNodeParameter('operation', itemIndex) as string;\n\n\t\t\ttry {\n\t\t\t\tif (resource === 'session' && operation === 'login') {\n\t\t\t\t\tconst email = this.getNodeParameter('linkedinEmail', itemIndex) as string;\n\t\t\t\t\tconst password = this.getNodeParameter('linkedinPassword', itemIndex) as string;\n\n\t\t\t\t\tconst response = await this.helpers.request({\n\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\turl: `${scraperUrl}/linkedin/login`,\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'Authorization': `Bearer ${bearerToken}`,\n\t\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\temail,\n\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tjson: true,\n\t\t\t\t\t\ttimeout: 2*60*1000,\n\t\t\t\t\t});\n\t\t\t\t\treturnData.push(response as IDataObject);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (resource === 'jobs' && operation === 'search') {\n\t\t\t\t\tconst jobTitles = splitCommaSeparated(\n\t\t\t\t\t\tthis.getNodeParameter('jobTitles', itemIndex) as string,\n\t\t\t\t\t);\n\t\t\t\t\tconst locations = splitCommaSeparated(\n\t\t\t\t\t\tthis.getNodeParameter('locations', itemIndex) as string,\n\t\t\t\t\t);\n\t\t\t\t\tconst email = this.getNodeParameter('linkedinEmailSearch', itemIndex) as string;\n\t\t\t\t\tconst password = this.getNodeParameter('linkedinPasswordSearch', itemIndex) as string;\n\t\t\t\t\tconst maxResults = this.getNodeParameter('maxResults', itemIndex) as number;\n\t\t\t\t\tconst includeJobsCh = this.getNodeParameter('includeJobsCh', itemIndex) as boolean;\n\t\t\t\t\tconst companyBlacklist = splitCommaSeparated(\n\t\t\t\t\t\t(this.getNodeParameter('companyBlacklist', itemIndex) as string) || '',\n\t\t\t\t\t);\n\t\t\t\t\tconst keywordBlacklist = splitCommaSeparated(\n\t\t\t\t\t\t(this.getNodeParameter('keywordBlacklist', itemIndex) as string) || '',\n\t\t\t\t\t);\n\n\t\t\t\t\t// First login to get cookies\n\t\t\t\t\tconst loginResponse = await this.helpers.request({\n\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\turl: `${scraperUrl}/linkedin/login`,\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'Authorization': `Bearer ${bearerToken}`,\n\t\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\temail,\n\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tjson: true,\n\t\t\t\t\t\ttimeout: 2*60*1000,\n\t\t\t\t\t});\n\n\t\t\t\t\tconst cookies = (loginResponse as IDataObject).cookies as IDataObject[];\n\n\t\t\t\t\t// Then search for jobs\n\t\t\t\t\tconst response = await this.helpers.request({\n\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\turl: `${scraperUrl}/jobs/search`,\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'Authorization': `Bearer ${bearerToken}`,\n\t\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tjob_titles: jobTitles,\n\t\t\t\t\t\t\tlocations,\n\t\t\t\t\t\t\tmax_results: maxResults,\n\t\t\t\t\t\t\tinclude_jobs_ch: includeJobsCh,\n\t\t\t\t\t\t\tcompany_blacklist: companyBlacklist,\n\t\t\t\t\t\t\tkeywords_blacklist: keywordBlacklist,\n\t\t\t\t\t\t\tcookies,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tjson: true,\n\t\t\t\t\t\ttimeout: 2*60*60*1000,\n\t\t\t\t\t});\n\n\t\t\t\t\tconst jobs = (response as IDataObject).jobs as IDataObject[];\n\t\t\t\t\tif (!Array.isArray(jobs)) {\n\t\t\t\t\t\tthrow new NodeApiError(this.getNode(), {\n\t\t\t\t\t\t\tmessage: 'Unexpected response format from job search',\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturnData.push(...jobs);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (resource === 'job' && operation === 'details') {\n\t\t\t\t\tconst jobUrl = this.getNodeParameter('jobUrl', itemIndex) as string;\n\n\t\t\t\t\tconst response = await this.helpers.request({\n\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\turl: `${scraperUrl}/jobs/details`,\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'Authorization': `Bearer ${bearerToken}`,\n\t\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\turl: jobUrl,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tjson: true,\n\t\t\t\t\t\ttimeout: 5*60*1000,\n\t\t\t\t\t});\n\t\t\t\t\treturnData.push(response as IDataObject);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (resource === 'company' && operation === 'followers') {\n\t\t\t\t\tconst companyUrl = this.getNodeParameter('companyUrl', itemIndex) as string;\n\n\t\t\t\t\tconst response = await this.helpers.request({\n\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\turl: `${scraperUrl}/companies/followers`,\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'Authorization': `Bearer ${bearerToken}`,\n\t\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\turl: companyUrl,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tjson: true,\n\t\t\t\t\t\ttimeout: 5*60*1000,\n\t\t\t\t\t});\n\t\t\t\t\treturnData.push(response as IDataObject);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tthrow new NodeApiError(this.getNode(), {\n\t\t\t\t\tmessage: `Unsupported resource (${resource}) or operation (${operation})`,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tif (this.continueOnFail()) {\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\terror: (error as Error).message,\n\t\t\t\t\t\titemIndex,\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\treturn [returnData.map((data) => ({ json: data }))];\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../nodes/LinkedinScraper/LinkedinScraper.node.ts"],"names":[],"mappings":"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","file":"LinkedinScraper.node.js","sourcesContent":["/**\n * Author: Marco Visin\n * Date: 2025-12-22\n * LinkedIn Scraper n8n node\n * Interacts with the LinkedIn scraper microservice\n * Uses the same InNotes API credentials for authentication\n */\n\nimport {\n\tIDataObject,\n\tIExecuteFunctions,\n\tINodeExecutionData,\n\tINodeType,\n\tINodeTypeDescription,\n\tNodeApiError,\n\tNodeConnectionType,\n} from 'n8n-workflow';\n\nfunction splitCommaSeparated(value: string): string[] {\n\treturn value\n\t\t.split(',')\n\t\t.map((entry) => entry.trim())\n\t\t.filter((entry) => entry.length > 0);\n}\n\nexport class LinkedinScraper implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'LinkedIn Scraper Service',\n\t\tname: 'linkedinScraper',\n\t\tgroup: ['transform'],\n\t\tversion: 1,\n\t\tdescription: 'Interact with the LinkedIn scraper microservice',\n\t\tsubtitle: '={{$parameter[\"operation\"] + \": \" + $parameter[\"resource\"]}}',\n\t\ticon: 'file:logo.svg',\n\t\tdefaults: {\n\t\t\tname: 'LinkedIn Scraper',\n\t\t},\n\t\tinputs: [NodeConnectionType.Main],\n\t\toutputs: [NodeConnectionType.Main],\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\t// Reuse the same InNotes API credentials\n\t\t\t\tname: 'inNotesApi',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t\tproperties: [\n\t\t\t// Scraper service URL\n\t\t\t{\n\t\t\t\tdisplayName: 'Scraper Service URL',\n\t\t\t\tname: 'scraperUrl',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: 'https://scraper.innotes.me',\n\t\t\t\tdescription: 'Base URL of the LinkedIn scraper service',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t// Resource selection\n\t\t\t{\n\t\t\t\tdisplayName: 'Resource',\n\t\t\t\tname: 'resource',\n\t\t\t\ttype: 'options',\n\t\t\t\tnoDataExpression: true,\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Session',\n\t\t\t\t\t\tvalue: 'session',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Jobs',\n\t\t\t\t\t\tvalue: 'jobs',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Job',\n\t\t\t\t\t\tvalue: 'job',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Company',\n\t\t\t\t\t\tvalue: 'company',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'jobs',\n\t\t\t},\n\t\t\t// Session operations\n\t\t\t{\n\t\t\t\tdisplayName: 'Operation',\n\t\t\t\tname: 'operation',\n\t\t\t\ttype: 'options',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['session'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Login',\n\t\t\t\t\t\tvalue: 'login',\n\t\t\t\t\t\taction: 'Login to LinkedIn and fetch cookies',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'login',\n\t\t\t},\n\t\t\t// Jobs operations\n\t\t\t{\n\t\t\t\tdisplayName: 'Operation',\n\t\t\t\tname: 'operation',\n\t\t\t\ttype: 'options',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['jobs'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Search',\n\t\t\t\t\t\tvalue: 'search',\n\t\t\t\t\t\taction: 'Search for jobs on LinkedIn and jobs.ch',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'search',\n\t\t\t},\n\t\t\t// Job operations\n\t\t\t{\n\t\t\t\tdisplayName: 'Operation',\n\t\t\t\tname: 'operation',\n\t\t\t\ttype: 'options',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['job'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Details',\n\t\t\t\t\t\tvalue: 'details',\n\t\t\t\t\t\taction: 'Fetch job details',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'details',\n\t\t\t},\n\t\t\t// Company operations\n\t\t\t{\n\t\t\t\tdisplayName: 'Operation',\n\t\t\t\tname: 'operation',\n\t\t\t\ttype: 'options',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['company'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Followers',\n\t\t\t\t\t\tvalue: 'followers',\n\t\t\t\t\t\taction: 'Fetch company follower count',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'followers',\n\t\t\t},\n\t\t\t// LinkedIn credentials for login\n\t\t\t{\n\t\t\t\tdisplayName: 'LinkedIn Email',\n\t\t\t\tname: 'linkedinEmail',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tplaceholder: 'user@example.com',\n\t\t\t\tdescription: 'LinkedIn account email',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['session'],\n\t\t\t\t\t\toperation: ['login'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'LinkedIn Password',\n\t\t\t\tname: 'linkedinPassword',\n\t\t\t\ttype: 'string',\n\t\t\t\ttypeOptions: {\n\t\t\t\t\tpassword: true,\n\t\t\t\t},\n\t\t\t\tdefault: '',\n\t\t\t\tdescription: 'LinkedIn account password',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['session'],\n\t\t\t\t\t\toperation: ['login'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t// Jobs search parameters\n\t\t\t{\n\t\t\t\tdisplayName: 'Job Titles',\n\t\t\t\tname: 'jobTitles',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tplaceholder: 'Software Engineer, Developer',\n\t\t\t\tdescription: 'Comma-separated list of job titles to search for',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['jobs'],\n\t\t\t\t\t\toperation: ['search'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Locations',\n\t\t\t\tname: 'locations',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tplaceholder: 'Zurich, Remote',\n\t\t\t\tdescription: 'Comma-separated list of locations to search in',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['jobs'],\n\t\t\t\t\t\toperation: ['search'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'LinkedIn Email',\n\t\t\t\tname: 'linkedinEmailSearch',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tplaceholder: 'user@example.com',\n\t\t\t\tdescription: 'LinkedIn account email for authentication',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['jobs'],\n\t\t\t\t\t\toperation: ['search'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'LinkedIn Password',\n\t\t\t\tname: 'linkedinPasswordSearch',\n\t\t\t\ttype: 'string',\n\t\t\t\ttypeOptions: {\n\t\t\t\t\tpassword: true,\n\t\t\t\t},\n\t\t\t\tdefault: '',\n\t\t\t\tdescription: 'LinkedIn account password',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['jobs'],\n\t\t\t\t\t\toperation: ['search'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Max Results',\n\t\t\t\tname: 'maxResults',\n\t\t\t\ttype: 'number',\n\t\t\t\tdefault: 500,\n\t\t\t\ttypeOptions: {\n\t\t\t\t\tminValue: 1,\n\t\t\t\t\tmaxValue: 2000,\n\t\t\t\t},\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['jobs'],\n\t\t\t\t\t\toperation: ['search'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Include jobs.ch',\n\t\t\t\tname: 'includeJobsCh',\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: true,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['jobs'],\n\t\t\t\t\t\toperation: ['search'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Company Blacklist',\n\t\t\t\tname: 'companyBlacklist',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tplaceholder: 'Company A, Company B',\n\t\t\t\tdescription: 'Comma-separated list of companies to exclude',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['jobs'],\n\t\t\t\t\t\toperation: ['search'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Keyword Blacklist',\n\t\t\t\tname: 'keywordBlacklist',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tplaceholder: 'Senior, Lead',\n\t\t\t\tdescription: 'Comma-separated list of keywords to exclude from job titles',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['jobs'],\n\t\t\t\t\t\toperation: ['search'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t// Job details parameters\n\t\t\t{\n\t\t\t\tdisplayName: 'Job URL',\n\t\t\t\tname: 'jobUrl',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tdescription: 'LinkedIn or jobs.ch job URL',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['job'],\n\t\t\t\t\t\toperation: ['details'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t// Company parameters\n\t\t\t{\n\t\t\t\tdisplayName: 'Company URL',\n\t\t\t\tname: 'companyUrl',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tdescription: 'LinkedIn company URL',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tresource: ['company'],\n\t\t\t\t\t\toperation: ['followers'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t};\n\n\tasync execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {\n\t\tconst items = this.getInputData();\n\t\tconst returnData: IDataObject[] = [];\n\n\t\t// Get InNotes API credentials (reused for scraper authentication)\n\t\tconst credentials = (await this.getCredentials('inNotesApi')) as IDataObject | null;\n\n\t\tif (!credentials) {\n\t\t\tthrow new NodeApiError(this.getNode(), {\n\t\t\t\tmessage: 'InNotes API credentials are missing',\n\t\t\t});\n\t\t}\n\n\t\t// Get the Bearer token from credentials\n\t\tconst authMethod = credentials.authMethod as string;\n\t\tlet bearerToken: string | undefined;\n\n\t\tif (authMethod === 'token') {\n\t\t\tbearerToken = credentials.token as string;\n\t\t} else {\n\t\t\tthrow new NodeApiError(this.getNode(), {\n\t\t\t\tmessage: 'LinkedIn Scraper requires Bearer token authentication. Please update your InNotes API credentials to use Bearer Token.',\n\t\t\t});\n\t\t}\n\n\t\tif (!bearerToken) {\n\t\t\tthrow new NodeApiError(this.getNode(), {\n\t\t\t\tmessage: 'Bearer token is missing from InNotes API credentials',\n\t\t\t});\n\t\t}\n\n\t\tfor (let itemIndex = 0; itemIndex < items.length; itemIndex++) {\n\t\t\tconst scraperUrl = (this.getNodeParameter('scraperUrl', itemIndex) as string).replace(/\\/+$/, '');\n\t\t\tconst resource = this.getNodeParameter('resource', itemIndex) as string;\n\t\t\tconst operation = this.getNodeParameter('operation', itemIndex) as string;\n\n\t\t\ttry {\n\t\t\t\tif (resource === 'session' && operation === 'login') {\n\t\t\t\t\tconst email = this.getNodeParameter('linkedinEmail', itemIndex) as string;\n\t\t\t\t\tconst password = this.getNodeParameter('linkedinPassword', itemIndex) as string;\n\n\t\t\t\t\tconst response = await this.helpers.request({\n\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\turl: `${scraperUrl}/linkedin/login`,\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'Authorization': `Bearer ${bearerToken}`,\n\t\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\temail,\n\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tjson: true,\n\t\t\t\t\t\ttimeout: 2*60*1000,\n\t\t\t\t\t});\n\t\t\t\t\treturnData.push(response as IDataObject);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (resource === 'jobs' && operation === 'search') {\n\t\t\t\t\tconst jobTitles = splitCommaSeparated(\n\t\t\t\t\t\tthis.getNodeParameter('jobTitles', itemIndex) as string,\n\t\t\t\t\t);\n\t\t\t\t\tconst locations = splitCommaSeparated(\n\t\t\t\t\t\tthis.getNodeParameter('locations', itemIndex) as string,\n\t\t\t\t\t);\n\t\t\t\t\tconst email = this.getNodeParameter('linkedinEmailSearch', itemIndex) as string;\n\t\t\t\t\tconst password = this.getNodeParameter('linkedinPasswordSearch', itemIndex) as string;\n\t\t\t\t\tconst maxResults = this.getNodeParameter('maxResults', itemIndex) as number;\n\t\t\t\t\tconst includeJobsCh = this.getNodeParameter('includeJobsCh', itemIndex) as boolean;\n\t\t\t\t\tconst companyBlacklist = splitCommaSeparated(\n\t\t\t\t\t\t(this.getNodeParameter('companyBlacklist', itemIndex) as string) || '',\n\t\t\t\t\t);\n\t\t\t\t\tconst keywordBlacklist = splitCommaSeparated(\n\t\t\t\t\t\t(this.getNodeParameter('keywordBlacklist', itemIndex) as string) || '',\n\t\t\t\t\t);\n\n\t\t\t\t\t// First login to get cookies\n\t\t\t\t\tconst loginResponse = await this.helpers.request({\n\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\turl: `${scraperUrl}/linkedin/login`,\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'Authorization': `Bearer ${bearerToken}`,\n\t\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\temail,\n\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tjson: true,\n\t\t\t\t\t\ttimeout: 2*60*1000,\n\t\t\t\t\t});\n\n\t\t\t\t\tconst cookies = (loginResponse as IDataObject).cookies as IDataObject[];\n\n\t\t\t\t\t// Then search for jobs\n\t\t\t\t\tconst response = await this.helpers.request({\n\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\turl: `${scraperUrl}/jobs/search`,\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'Authorization': `Bearer ${bearerToken}`,\n\t\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tjob_titles: jobTitles,\n\t\t\t\t\t\t\tlocations,\n\t\t\t\t\t\t\tmax_results: maxResults,\n\t\t\t\t\t\t\tinclude_jobs_ch: includeJobsCh,\n\t\t\t\t\t\t\tcompany_blacklist: companyBlacklist,\n\t\t\t\t\t\t\tkeywords_blacklist: keywordBlacklist,\n\t\t\t\t\t\t\tcookies,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tjson: true,\n\t\t\t\t\t\ttimeout: 2*60*60*1000,\n\t\t\t\t\t});\n\n\t\t\t\t\tconst jobs = (response as IDataObject).jobs as IDataObject[];\n\t\t\t\t\tif (!Array.isArray(jobs)) {\n\t\t\t\t\t\tthrow new NodeApiError(this.getNode(), {\n\t\t\t\t\t\t\tmessage: 'Unexpected response format from job search',\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturnData.push(...jobs);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (resource === 'job' && operation === 'details') {\n\t\t\t\t\tconst jobUrl = this.getNodeParameter('jobUrl', itemIndex) as string;\n\n\t\t\t\t\t// Validate URL - skip if not a valid URL\n\t\t\t\t\tif (!jobUrl || !jobUrl.startsWith('http')) {\n\t\t\t\t\t\treturnData.push({\n\t\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t\terror: `Invalid job URL: ${jobUrl || 'empty'}`,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst response = await this.helpers.request({\n\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\turl: `${scraperUrl}/jobs/details`,\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'Authorization': `Bearer ${bearerToken}`,\n\t\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\turl: jobUrl,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tjson: true,\n\t\t\t\t\t\ttimeout: 5*60*1000,\n\t\t\t\t\t});\n\t\t\t\t\treturnData.push(response as IDataObject);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (resource === 'company' && operation === 'followers') {\n\t\t\t\t\tconst companyUrl = this.getNodeParameter('companyUrl', itemIndex) as string;\n\n\t\t\t\t\t// Validate URL - skip if not a valid URL\n\t\t\t\t\tif (!companyUrl || !companyUrl.startsWith('http')) {\n\t\t\t\t\t\treturnData.push({\n\t\t\t\t\t\t\tfollower_count: 0,\n\t\t\t\t\t\t\tsource: 'skipped',\n\t\t\t\t\t\t\terror: `Invalid company URL: ${companyUrl || 'empty'}`,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst response = await this.helpers.request({\n\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\turl: `${scraperUrl}/companies/followers`,\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'Authorization': `Bearer ${bearerToken}`,\n\t\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\turl: companyUrl,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tjson: true,\n\t\t\t\t\t\ttimeout: 5*60*1000,\n\t\t\t\t\t});\n\t\t\t\t\treturnData.push(response as IDataObject);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tthrow new NodeApiError(this.getNode(), {\n\t\t\t\t\tmessage: `Unsupported resource (${resource}) or operation (${operation})`,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tif (this.continueOnFail()) {\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\terror: (error as Error).message,\n\t\t\t\t\t\titemIndex,\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\treturn [returnData.map((data) => ({ json: data }))];\n\t}\n}\n"]}
|
package/dist/package.json
CHANGED