UNPKG

@kaia-team/n8n-nodes-kaia

Version:
215 lines 6.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.crawlsApiProperties = void 0; exports.handleCrawlsApi = handleCrawlsApi; const n8n_workflow_1 = require("n8n-workflow"); const utils_1 = require("../utils"); /** * Crawls API Properties * Properties specific to the crawls API resource (web crawling) */ exports.crawlsApiProperties = [ { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['crawls'], }, }, options: [ { name: 'Create', value: 'create', action: 'Create a crawl', }, { name: 'Delete', value: 'delete', action: 'Delete a crawl', }, { name: 'List', value: 'list', action: 'List crawls', }, { name: 'Read', value: 'read', action: 'Read a crawl', }, { name: 'Tree View', value: 'treeView', action: 'Get tree view of a crawl', }, { name: 'Update', value: 'update', action: 'Update a crawl', }, ], default: 'list', }, { displayName: 'Crawl ID', name: 'crawlId', type: 'string', default: '', displayOptions: { show: { resource: ['crawls'], operation: ['read', 'update', 'delete', 'treeView'], }, }, description: 'The ID of the crawl', required: true, }, { displayName: 'URL', name: 'url', type: 'string', default: '', displayOptions: { show: { resource: ['crawls'], operation: ['create', 'update'], }, }, description: 'URL to crawl', }, { displayName: 'Depth Limit', name: 'depthlimit', type: 'number', default: 0, displayOptions: { show: { resource: ['crawls'], operation: ['create', 'update'], }, }, description: 'Depth limit for crawling', }, { displayName: 'Chunk Size', name: 'chunk_size', type: 'number', default: 0, displayOptions: { show: { resource: ['crawls'], operation: ['create', 'update'], }, }, description: 'Chunk size for processing', }, { displayName: 'Chunk Overlap', name: 'chunk_overlap', type: 'number', default: 0, displayOptions: { show: { resource: ['crawls'], operation: ['create', 'update'], }, }, description: 'Chunk overlap for processing', }, { displayName: 'Dividers', name: 'dividers', type: 'string', default: '', displayOptions: { show: { resource: ['crawls'], operation: ['create', 'update'], }, }, description: 'Dividers for text processing', }, ]; /** * Crawls API Handler * Handles requests to the crawls API (web crawling) */ async function handleCrawlsApi(executeFunctions, itemIndex, adminUrl, adminToken) { const operation = executeFunctions.getNodeParameter('operation', itemIndex); const additionalFields = executeFunctions.getNodeParameter('additionalFields', itemIndex, {}); const headers = (0, utils_1.createHeaders)(adminToken, additionalFields); if (operation === 'list') { const response = await executeFunctions.helpers.httpRequest({ method: 'GET', url: `${adminUrl}/crawls.json`, headers, }); return executeFunctions.helpers.returnJsonArray(response); } else if (operation === 'read') { let crawlId = executeFunctions.getNodeParameter('crawlId', itemIndex); crawlId = (0, utils_1.extractIdFromUrlOrId)(crawlId, 'crawls'); const response = await executeFunctions.helpers.httpRequest({ method: 'GET', url: `${adminUrl}/crawls/${crawlId}.json`, headers, }); return response; } else if (operation === 'create' || operation === 'update') { const payload = { crawl: {} }; const addIfSet = (key, param, defaultVal = '') => { const val = executeFunctions.getNodeParameter(param, itemIndex, defaultVal); if (val !== defaultVal && (typeof val !== 'string' || val.trim() !== '')) { payload.crawl[key] = val; } }; addIfSet('url', 'url'); addIfSet('depthlimit', 'depthlimit', 0); addIfSet('chunk_size', 'chunk_size', 0); addIfSet('chunk_overlap', 'chunk_overlap', 0); addIfSet('dividers', 'dividers'); const method = operation === 'create' ? 'post' : 'patch'; let url; if (operation === 'create') { url = `${adminUrl}/crawls.json`; } else { let crawlId = executeFunctions.getNodeParameter('crawlId', itemIndex); crawlId = (0, utils_1.extractIdFromUrlOrId)(crawlId, 'crawls'); url = `${adminUrl}/crawls/${crawlId}.json`; } const response = await executeFunctions.helpers.httpRequest({ method: method.toUpperCase(), url, body: payload, headers, }); return response; } else if (operation === 'delete') { let crawlId = executeFunctions.getNodeParameter('crawlId', itemIndex); crawlId = (0, utils_1.extractIdFromUrlOrId)(crawlId, 'crawls'); const response = await executeFunctions.helpers.httpRequest({ method: 'DELETE', url: `${adminUrl}/crawls/${crawlId}.json`, headers, }); return { success: true, deletedId: crawlId }; } else if (operation === 'treeView') { let crawlId = executeFunctions.getNodeParameter('crawlId', itemIndex); crawlId = (0, utils_1.extractIdFromUrlOrId)(crawlId, 'crawls'); const response = await executeFunctions.helpers.httpRequest({ method: 'GET', url: `${adminUrl}/crawls/${crawlId}/tree_view.json`, headers, }); return response; } throw new n8n_workflow_1.NodeOperationError(executeFunctions.getNode(), `Unknown crawls operation: ${operation}`); } //# sourceMappingURL=crawlsApi.js.map