// Dependencies var ParseUrl = require("parse-url") , IsSsh = require("is-ssh") ; /** * GitUp * Parses the input url. * * @name GitUp * @function * @param {String} input The input url. * @return {Object} An object containing the following fields: * * - `protocols` (Array): An array with the url protocols (usually it has one element). * - `port` (null|Number): The domain port. * - `resource` (String): The url domain (including subdomains). * - `user` (String): The authentication user (usually for ssh urls). * - `pathname` (String): The url pathname. * - `hash` (String): The url hash. * - `search` (String): The url querystring value. * - `href` (String): The input url. * - `protocol` (String): The git url protocol. * - `token` (String): The oauth token (could appear in the https urls). */ function GitUp(input) { var output = ParseUrl(input); output.token = ""; splits = output.user.split(":"); if (splits.length === 2) { if (splits[1] === "x-oauth-basic") { output.token = splits[0]; } else if (splits[0] === "x-token-auth") { output.token = splits[1]; } } if (IsSsh(output.protocols) || IsSsh(input)) { output.protocol = "ssh"; } else if (output.protocols.length) { output.protocol = output.protocols[0]; } else { output.protocol = "file"; } return output; } module.exports = GitUp;