var _ = require('../util').lodash, PropertyList = require('./property-list').PropertyList, Url = require('./url').Url, Certificate = require('./certificate').Certificate, CertificateList; _.inherit(( /** * @constructor * @extends {PropertyList} * * @param {Object} parent - * @param {Array} list - The list of certificate representations * * @example Create a new CertificateList * var CertificateList = require('postman-collection').CertificateList, * certificateList = new CertificateList({}, [ * { * name: 'my certificate for example.com', * matches: ['https://example.com/*'], * key: { src: '/path/to/key/file' }, * cert: { src: '/path/to/certificate/file' } * }, * { * name: 'my certificate for example2.com', * matches: ['https://example2.com/*'], * key: { src: '/path/to/key/file' }, * cert: { src: '/path/to/key/file' } * } * ]); */ CertificateList = function (parent, list) { // this constructor is intended to inherit and as such the super constructor is required to be executed CertificateList.super_.call(this, Certificate, parent, list); }), PropertyList); _.assign(CertificateList.prototype, /** @lends CertificateList.prototype */ { /** * Matches the given url against the member certificates' allowed matches * and returns the certificate that can be used for the url. * * @param {String} url The url to find the certificate for * @returns {Certificate.definition=} The matched certificate */ resolveOne (url) { // url must be either string or an instance of url. if (!_.isString(url) && !Url.isUrl(url)) { return; } // find a certificate that can be applied to the url return this.find(function (certificate) { return certificate.canApplyTo(url); }); } }); _.assign(CertificateList, /** @lends CertificateList */ { /** * Defines the name of this property for internal use. * * @private * @readOnly * @type {String} */ _postman_propertyName: 'CertificateList', /** * Checks if the given object is a CertificateList * * @param {*} obj - * @returns {Boolean} */ isCertificateList: function (obj) { return Boolean(obj) && ((obj instanceof CertificateList) || _.inSuperChain(obj.constructor, '_postman_propertyName', CertificateList._postman_propertyName)); } }); module.exports = { CertificateList };