aboutsummaryrefslogblamecommitdiffstats
path: root/lib/util.js
blob: 089e31ce68c08a5b6ec87a2a75704ceb7e5ceadd (plain) (tree)
























                                                                                
    






































                                                                         











                                                
/*global exports: false, require: false, console: false, Cc: false, Ci: false */
/*jslint onevar: false */
// Released under the MIT/X11 license
// http://www.opensource.org/licenses/mit-license.php
"use strict";
// ==============================================================
var Cc = require("chrome").Cc;
var Ci = require("chrome").Ci;
var urlMod = require("url");

/**
 * get parameters of URL as an object (name, value)
 */
function getParamsFromURL (url, base) {
    if (!url || (url.toString().length === 0)) {
        throw new Error("Missing URL value!");
    }

    if (!(url instanceof urlMod.URL)) {
        url = new urlMod.URL(url.toString(), base);
    }

    var paramsArr = url.path.split("?");
    if (paramsArr.length === 1) {
        return {};
   }

    // get convert URL parameters to an Object
    var params = {}, s = [];
    paramsArr[1].split('&').forEach(function(par) {
        s = par.split('=');
        params[s[0]] = s[1];
    });
    return params;
}

/**
 * Get a bug no from URL ... fails with aliases
 * It should theoretically belong to bzpage.js, but we don't have
 * unit tests there yet, so keeping here.
 *
 * @param url String with URL to be analyzed
 * @return String with the bug ID (hopefully number, but not for aliases)
 */
exports.getBugNo = function getBugNo(url) {
    var params = getParamsFromURL(url);
    if (params && params.id) {
        return params.id;
    }
};

/**
 * format date to be in ISO format (just day part)
 *
 * @param date
 * @return string with the formatted date
 */
exports.getISODate = function getISODate(dateStr) {
    function pad(n) {
        return n < 10 ? '0' + n : n;
    }
    var date = new Date(dateStr);
    return date.getFullYear() + '-' + pad(date.getMonth() + 1) + '-' +
            pad(date.getDate());
};

/**
 * object to pack messaging. Use as in
        postMessage(new Message("GetPassword", {
            login: login,
            hostname: location.hostname
        }));
 */
exports.Message = function Message(cmd, data) {
	this.cmd = cmd;
	this.data = data;
};