UNPKG

n8n-nodes-walichat

Version:

n8n plugin for WaliChat

105 lines (104 loc) 4.03 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.request = exports.rawRequest = void 0; const axios_1 = __importDefault(require("axios")); const baseUrl = 'https://api.wali.chat/v1'; const clientRuntime = process.env.N8N_RUNTIME_CLIENT; async function rawRequest(opts, apiKey) { if (!apiKey) { throw new Error('API key is required'); } if (!opts.url) { throw new Error('URL path is required'); } opts.baseURL = baseUrl; opts.headers = opts.headers || {}; Object.assign(opts.headers, { 'x-n8n-client': 'n8n', 'Authorization': `Bearer ${clientRuntime ? clientRuntime + '_' : ''}${apiKey}`, }); return await (0, axios_1.default)(opts); } exports.rawRequest = rawRequest; /** * Makes an authenticated request to the WaliChat API * * @param executeFunctions - The n8n execute functions context * @param method - HTTP method (GET, POST, PUT, PATCH, DELETE) * @param endpoint - API endpoint (without base URL) * @param body - Optional request body for POST, PUT, PATCH, DELETE * @param query - Optional query parameters * @param customHeaders - Optional custom headers to merge with defaults * @returns The API response data */ async function request(executeFunctions, method, endpoint, body, query, customHeaders) { var _a; const credentials = await executeFunctions.getCredentials('walichatApiKey'); const apiKey = credentials.walichatApiKey; if (!apiKey) { throw new Error('API key is required'); } const url = `${baseUrl}${endpoint}`; const headers = { 'Content-Type': 'application/json', 'Authorization': `Bearer ${clientRuntime ? clientRuntime + '_' : ''}${apiKey}`, 'x-n8n-client': 'n8n', ...(customHeaders || {}), }; const config = { url, method, headers, params: query, }; if (['POST', 'PUT', 'PATCH', 'DELETE'].includes(method) && body) { config.data = body; } try { const response = await (0, axios_1.default)(config); return response.data; } catch (error) { if (axios_1.default.isAxiosError(error)) { // Create a detailed error object with additional information const errorResponse = { error: error.message, statusCode: (_a = error.response) === null || _a === void 0 ? void 0 : _a.status, }; if (error.response) { errorResponse.statusText = error.response.statusText; // Add response data if available if (error.response.data) { if (typeof error.response.data === 'object') { errorResponse.responseBody = error.response.data; } else { try { errorResponse.responseBody = JSON.parse(error.response.data); } catch (e) { errorResponse.responseBody = error.response.data; } } // Add any error message or code from the response if (error.response.data.error) { errorResponse.apiError = error.response.data.error; } if (error.response.data.code) { errorResponse.apiCode = error.response.data.code; } if (error.response.data.message) { errorResponse.apiMessage = error.response.data.message; } } } throw new Error(`WaliChat API Error: ${JSON.stringify(errorResponse)}`); } // Re-throw non-axios errors throw error; } } exports.request = request;