n8n-nodes-quepasa
Version:
This is an n8n community node. It lets you use Quepasa in your n8n workflows. (use with Quepasa >= v4)
129 lines • 4.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getFileNameFromHeaderContent = exports.createWebHookFromTrigger = exports.requestBotInfo = exports.authorizationError = exports.eventExists = exports.apiRequest = void 0;
const n8n_workflow_1 = require("n8n-workflow");
const lodash_1 = require("lodash");
async function apiRequest(method, endpoint = '', body = {}, qs = {}, uri, headers = {}) {
var _a, _b;
let baseUrl = this.getNodeParameter('baseUrl', 0, '');
let token = this.getNodeParameter('token', 0, '');
if (!baseUrl || !token) {
const credentials = await this.getCredentials('quepasaTokenAuthApi');
baseUrl = baseUrl || credentials.baseUrl;
token = token || credentials.accessToken;
}
const fullUri = baseUrl + `${endpoint}`;
const options = {
headers: {
Accept: 'application/json',
'X-QUEPASA-TOKEN': token,
},
method,
qs,
url: uri || fullUri,
timeout: 15000,
returnFullResponse: true,
};
if (endpoint === '/download' || endpoint === '/picdata') {
options.encoding = 'arraybuffer';
options.json = false;
}
else {
options.encoding = 'json';
options.json = true;
}
if (Object.keys(headers).length !== 0) {
options.headers = Object.assign({}, options.headers, headers);
}
if (Object.keys(body).length !== 0) {
options.body = body;
}
qs = qs || {};
if (options.qs && Object.keys(options.qs).length === 0) {
delete options.qs;
}
try {
return await this.helpers.httpRequest(options);
}
catch (innerException) {
const status = ((_b = (_a = innerException.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.string) || undefined;
throw new n8n_workflow_1.NodeApiError(this.getNode(), innerException);
}
}
exports.apiRequest = apiRequest;
function eventExists(currentEvents, webhookEvents) {
for (const currentEvent of currentEvents) {
if ((0, lodash_1.get)(webhookEvents, `${currentEvent.split('.')[0]}.${currentEvent.split('.')[1]}`) !== true) {
return false;
}
}
return true;
}
exports.eventExists = eventExists;
function authorizationError(resp, realm, responseCode, message) {
if (message === undefined) {
message = 'Authorization problem!';
if (responseCode === 401) {
message = 'Authorization is required!';
}
else if (responseCode === 403) {
message = 'Authorization data is wrong!';
}
}
resp.writeHead(responseCode, { 'WWW-Authenticate': `Basic realm="${realm}"` });
resp.end(message);
return {
noWebhookResponse: true,
};
}
exports.authorizationError = authorizationError;
function requestBotInfo(credentials) {
let baseUrl = credentials.baseUrl;
if (baseUrl.endsWith("/")) {
baseUrl = baseUrl.slice(0, -1);
}
const options = {
method: 'GET',
headers: {
Accept: 'application/json',
'X-QUEPASA-TOKEN': credentials.accessToken,
},
uri: baseUrl,
json: true,
};
return options;
}
exports.requestBotInfo = requestBotInfo;
function createWebHookFromTrigger(source) {
var _a;
const reqBody = {
url: source.getNodeWebhookUrl('default'),
forwardinternal: source.getNodeParameter('forwardInternal', false),
trackid: (_a = source.getNodeParameter('trackid', '')) !== null && _a !== void 0 ? _a : undefined,
};
const parExtraAttributes = source.getNodeParameter('extraAttributes', {});
if (parExtraAttributes && parExtraAttributes.attribute) {
const data = {};
const atts = parExtraAttributes.attribute;
atts.map(property => {
data[property.key] = property.value;
});
reqBody.extra = data;
}
return reqBody;
}
exports.createWebHookFromTrigger = createWebHookFromTrigger;
function getFileNameFromHeaderContent(source) {
if (source) {
const disposition = source['content-disposition'];
if (disposition && disposition.indexOf('attachment') !== -1) {
const filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
const matches = filenameRegex.exec(disposition);
if (matches != null && matches[1]) {
return matches[1].replace(/['"]/g, '');
}
}
}
}
exports.getFileNameFromHeaderContent = getFileNameFromHeaderContent;
//# sourceMappingURL=GenericFunctions.js.map