UNPKG

n8n-nodes-mautic-advanced

Version:

Enhanced n8n node for Mautic with comprehensive API coverage including tags, campaigns, categories, and advanced contact management

67 lines (66 loc) 2.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.requestMauticAuthenticated = void 0; const oauthRequestQueue_1 = require("./oauthRequestQueue"); const authErrorHelpers_1 = require("./authErrorHelpers"); function trimTrailingSlash(url) { return url.endsWith('/') ? url.slice(0, -1) : url; } function withCredentialBaseUrl(options, credentials) { const requestOptions = { ...options }; if (typeof requestOptions.uri === 'string' && requestOptions.uri.startsWith('/')) { const baseUrl = trimTrailingSlash(credentials.url); requestOptions.uri = `${baseUrl}${requestOptions.uri}`; } return requestOptions; } function credentialRefPart(value) { if (typeof value === 'string' && value) { return value; } if (typeof value !== 'object' || value === null) { return undefined; } const credentialRef = value; if (credentialRef.id) { return credentialRef.id; } if (credentialRef.name) { return credentialRef.name; } return undefined; } function getOAuthCredentialQueueKey(node) { const credentialRef = node.credentials?.mauticAdvancedOAuth2Api; const keyPart = credentialRefPart(credentialRef) ?? 'unknown'; return `mauticAdvancedOAuth2Api:${keyPart}`; } async function requestOAuth2WithMauticOptions(context, helperContext, requestOptions) { return (await helperContext.helpers.requestOAuth2.call(context, 'mauticAdvancedOAuth2Api', requestOptions, { includeCredentialsOnRefreshOnBody: true, })); } async function requestMauticAuthenticated(context, authenticationMethod, options) { const credentialType = authenticationMethod === 'credentials' ? 'mauticAdvancedApi' : 'mauticAdvancedOAuth2Api'; const credentials = await context.getCredentials(credentialType); const requestOptions = withCredentialBaseUrl(options, credentials); const helperContext = context; if (authenticationMethod === 'credentials') { return (await helperContext.helpers.requestWithAuthentication.call(context, 'mauticAdvancedApi', requestOptions)); } const queueKey = getOAuthCredentialQueueKey(context.getNode()); try { return await (0, oauthRequestQueue_1.runTrackedCredentialRequest)(queueKey, async () => requestOAuth2WithMauticOptions(context, helperContext, requestOptions)); } catch (error) { if (!(0, authErrorHelpers_1.isInvalidGrantError)(error)) { throw error; } await (0, oauthRequestQueue_1.waitForTrackedCredentialRequests)(queueKey); return await (0, oauthRequestQueue_1.runWithCredentialLock)(queueKey, async () => { await (0, oauthRequestQueue_1.waitForTrackedCredentialRequests)(queueKey); return await requestOAuth2WithMauticOptions(context, helperContext, requestOptions); }); } } exports.requestMauticAuthenticated = requestMauticAuthenticated;