acvetkov/fake-request

View on GitHub
src/utils.js

Summary

Maintainability
A
0 mins
Test Coverage
(function () {

    'use strict';

    module.exports = {

        /**
         * parse response headers
         * @param {String} headers
         * @returns {{}}
         */
        parseHeaders: function (headers) {
            var lines = headers.split(/\r?\n/);
            var fields = {};
            var index;
            var field;
            var val;
            var lastElement = lines[lines.length - 1];
            if (lastElement.length < 3) {
                lines.pop();
            }
            lines.forEach(function (line) {
                index = line.indexOf(':');
                field = line.slice(0, index).toLowerCase();
                val = line.slice(index + 1).trim();
                fields[field] = val;
            });

            return fields;
        },

        /**
         * is param function
         * @param {*} param
         * @returns {boolean}
         */
        isFunction: function (param) {
            return typeof param === 'function';
        },

        /**
         * is param string
         * @param {*} param
         * @returns {boolean}
         */
        isString: function (param) {
            return typeof param === 'string';
        },

        /**
         * is param number
         * @param {*} param
         * @returns {boolean}
         */
        isNumber: function (param) {
            return typeof param === 'number';
        },

        /**
         * is param regexp
         * @param {*} param
         * @returns {boolean}
         */
        isRegexp: function (param) {
            return param instanceof RegExp;
        },

        /**
         * compare uri
         * @returns {Boolean}
         */
        isEqualsURI: function (originalURI, compareURI) {
            if (originalURI.host() !== compareURI.host()) {
                return false;
            }
            if (compareURI.path() && compareURI.path() !== '/' && compareURI.path() !== originalURI.path()) {
                return false;
            }
            return this.isEqualsQuery(originalURI.query(true), compareURI.query(true));
        },

        /**
         * @param originalQuery
         * @param compareQuery
         * @returns {Boolean}
         */
        isEqualsQuery: function (originalQuery, compareQuery) {
            if (originalQuery && compareQuery) {
                return Object.keys(compareQuery).every(function (compareKey) {
                    return compareKey in originalQuery;
                });
            }
            return true;
        },

        /**
         * stub function
         */
        stub: function () {

        }
    };

})();