UNPKG

n8n-nodes-nimbasms

Version:

Nimba SMS node for n8n - Send SMS, manage contacts, campaigns and more

97 lines (96 loc) 3.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.nimbaSmsApiRequest = nimbaSmsApiRequest; exports.nimbaSmsApiRequestAllItems = nimbaSmsApiRequestAllItems; exports.validateEmail = validateEmail; exports.validatePhoneNumber = validatePhoneNumber; exports.formatPhoneNumber = formatPhoneNumber; exports.validateSenderName = validateSenderName; exports.validateMessage = validateMessage; exports.preparePaginationQuery = preparePaginationQuery; const n8n_workflow_1 = require("n8n-workflow"); async function nimbaSmsApiRequest(method, resource, body = {}, qs = {}, uri, option = {}) { const credentials = await this.getCredentials('nimbaSmsApi'); let options = { headers: { 'Content-Type': 'application/json', }, method, qs, body, uri: uri || `https://api.nimbasms.com/v1/${resource}`, json: true, auth: { user: credentials.serviceId, password: credentials.secretToken, }, }; options = Object.assign({}, options, option); if (Object.keys(body).length === 0) { delete options.body; } try { return await this.helpers.request(options); } catch (error) { throw new n8n_workflow_1.NodeApiError(this.getNode(), error); } } async function nimbaSmsApiRequestAllItems(propertyName, method, endpoint, body = {}, query = {}) { const returnData = []; let responseData; query.limit = 100; query.offset = 0; do { responseData = await nimbaSmsApiRequest.call(this, method, endpoint, body, query); if (responseData[propertyName]) { returnData.push.apply(returnData, responseData[propertyName]); } query.offset = query.offset + query.limit; } while (responseData.next); return returnData; } function validateEmail(email) { const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return emailRegex.test(email); } function validatePhoneNumber(phone) { // Remove all non-digit characters const cleanPhone = phone.replace(/\D/g, ''); // Check if it's a valid Guinea phone number (8-18 digits) return cleanPhone.length >= 8 && cleanPhone.length <= 18; } function formatPhoneNumber(phone) { // Remove all non-digit characters except + let cleanPhone = phone.replace(/[^\d+]/g, ''); // If it doesn't start with +, add Guinea country code if (!cleanPhone.startsWith('+')) { if (cleanPhone.startsWith('224')) { cleanPhone = '+' + cleanPhone; } else { cleanPhone = '+224' + cleanPhone; } } return cleanPhone; } function validateSenderName(senderName) { // Sender name should be max 11 characters, alphanumeric return senderName.length <= 11 && /^[a-zA-Z0-9]+$/.test(senderName); } function validateMessage(message) { // Message should be max 665 characters (up to 4 SMS concatenated) return message.length <= 665; } function preparePaginationQuery(options) { const query = {}; if (options.returnAll) { query.limit = 100; // Use reasonable default for pagination query.offset = 0; } else { query.limit = options.limit || 50; query.offset = options.offset || 0; } return query; }