1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- "use strict";
- // 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 = "";
- var 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";
- }
- output.href = output.href.replace(/\/$/, "");
- return output;
- }
- module.exports = gitUp;
|