UNPKG

node-sparky

Version:
286 lines (263 loc) 5.52 kB
/** * @file Defines Sparky Validator * @author Nicholas Marus <nmarus@gmail.com> * @license LGPL-3.0 */ 'use strict'; var _ = require('lodash'); /** * Spark Validation functions. * * @name Validator * @namespace Validator */ var Validator = {}; /** * Validate String is Email. * @function * @memberof Validator * @param {String} email * @returns {Boolean} */ Validator.isEmail = function(email) { if(typeof email !== 'string') { return false; } email = _.toLower(email); var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return re.test(email); }; /** * Validate String is URL. * * @function * @memberof Validator * @param {String} url * @returns {Boolean} */ Validator.isUrl = function(url) { if(typeof url !== 'string') { return false; } else { var re = /((https?):\/\/)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)/; return re.test(url); } }; /** * Validate String is File path. * * @function * @memberof Validator * @param {String} path * @returns {Boolean} */ Validator.isFilePath = function(path) { if(typeof path !== 'string') { return false; } else { var re = /^(?!(https?:\/))(\/?)[ -~]*/; return re.test(path); } }; /** * Validate Spark Room Object. * * @function * @memberof Validator * @param {Room} object * @returns {Boolean} */ Validator.isRoom = function(room) { if(room instanceof Array) room = room[0]; var result = (typeof room === 'object' && room.id && room.title && room.type && room.created ); return result; }; /** * Validate Spark Person Object. * * @function * @memberof Validator * @param {Room} object * @returns {Boolean} */ Validator.isPerson = function(person) { if(person instanceof Array) person = person[0]; var result = (typeof person === 'object' && person.id && person.displayName && person.created && person.avatar && person.emails ); return result; }; /** * Validate Spark Message Object. * * @function * @memberof Validator * @param {Message} object * @returns {Boolean} */ Validator.isMessage = function(message) { if(message instanceof Array) message = message[0]; var result = (typeof message === 'object' && message.id && message.personId && message.personEmail && message.created && (message.text || message.files) ); return result; }; /** * Validate Spark Membership Object. * * @function * @memberof Validator * @param {Membership} object * @returns {Boolean} */ Validator.isMembership = function(membership) { if(membership instanceof Array) membership = membership[0]; var result = (typeof membership === 'object' && membership.id && membership.personId && membership.personEmail && membership.created ); return result; }; /** * Validate Spark Webhook Object. * * @function * @memberof Validator * @param {Webhook} object * @returns {Boolean} */ Validator.isWebhook = function(webhook) { if(webhook instanceof Array) webhook = webhook[0]; var result = (typeof webhook === 'object' && webhook.id && webhook.name && webhook.targetUrl && webhook.resource && webhook.event && webhook.filter ); return result; }; /** * Validate Spark Team Object. * * @function * @memberof Validator * @param {Team} object * @returns {Boolean} */ Validator.isTeam = function(team) { if(team instanceof Array) team = team[0]; var result = (typeof team === 'object' && team.id && team.name && team.created ); return result; }; /** * Validate Spark Room Objects in Array. * * @function * @memberof Validator * @param {Array} rooms * @returns {Boolean} */ Validator.isRooms = function(rooms) { if(rooms instanceof Array) { return _.every(rooms, Validator.isRoom); } else { return false; } }; /** * Validate Spark Person Objects in Array. * * @function * @memberof Validator * @param {Array} persons * @returns {Boolean} */ Validator.isPeople = function(people) { if(people instanceof Array) { return _.every(people, Validator.isPerson); } else { return false; } }; /** * Validate Spark Message Objects in Array. * * @function * @memberof Validator * @param {Array} messages * @returns {Boolean} */ Validator.isMessages = function(messages) { if(messages instanceof Array) { return _.every(messages, Validator.isMessage); } else { return false; } }; /** * Validate Spark Membership Objects in Array. * * @function * @memberof Validator * @param {Array} memberships * @returns {Boolean} */ Validator.isMemberships = function(memberships) { if(memberships instanceof Array) { return _.every(memberships, Validator.isMembership); } else { return false; } }; /** * Validate Spark Webhook Objects in Array. * * @function * @memberof Validator * @param {Array} webhooks * @returns {Boolean} */ Validator.isWebhooks = function(webhooks) { if(webhooks instanceof Array) { return _.every(webhooks, Validator.isWebhook); } else { return false; } }; /** * Validate Spark Team Objects in Array. * * @function * @memberof Validator * @param {Array} teams * @returns {Boolean} */ Validator.isTeams = function(teams) { if(teams instanceof Array) { return _.every(teams, Validator.isWebhook); } else { return false; } }; module.exports = Validator;