UNPKG

n8n-nodes-tavilyapi

Version:
81 lines (80 loc) 3.27 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.tavilyApiRequest = void 0; const axios_1 = __importDefault(require("axios")); const n8n_workflow_1 = require("n8n-workflow"); // CHANGED // import { IExecuteFunctions } from 'n8n-core'; // REMOVED /** * Common function to call the Tavily API. * Handles request execution and standard error handling. */ async function tavilyApiRequest(method, resource, body, apiKey) { let response; try { response = await axios_1.default.request({ method, url: `https://api.tavily.com${resource}`, data: body, headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${apiKey}`, }, }); } catch (error) { if (axios_1.default.isAxiosError(error)) { const status = error.response?.status; let message = `Tavily API error: ${error.message}`; if (status) { switch (status) { case 400: message = 'Tavily error [400]: Bad Request.'; break; case 401: message = 'Tavily error [401]: Unauthorized.'; break; case 403: message = 'Tavily error [403]: Forbidden.'; break; case 429: message = 'Tavily error [429]: Too many requests.'; break; case 500: message = 'Tavily error [500]: Internal Server Error.'; break; default: message = `Tavily API error [${status}]: ${error.message}`; break; } } // If the Tavily API returned a body with error details, append them if (error.response?.data) { const data = error.response.data; const additionalMsgParts = []; if (data.error_code) { additionalMsgParts.push(`error_code: ${data.error_code}`); } if (data.error_message) { additionalMsgParts.push(`error_message: ${data.error_message}`); } if (!data.error_code && !data.error_message) { additionalMsgParts.push(JSON.stringify(data)); } if (additionalMsgParts.length > 0) { message += ` | ${additionalMsgParts.join(' | ')}`; } } // PASS A JsonObject throw new n8n_workflow_1.NodeApiError(this.getNode(), { message }); } else { // If not an AxiosError, wrap it throw new n8n_workflow_1.NodeApiError(this.getNode(), { message: String(error) }); } } return response.data; } exports.tavilyApiRequest = tavilyApiRequest;