Exemplo n.º 1
0
    def extract_credentials(self, url):
        """
        Extracts user/password from a url.

        Returns a tuple:
            (url-without-auth, username, password)
        """
        if isinstance(url, urllib2.Request):
            result = urlparse.urlsplit(url.get_full_url())
        else:
            result = urlparse.urlsplit(url)
        scheme, netloc, path, query, frag = result

        username, password = self.parse_credentials(netloc)
        if username is None:
            return url, None, None
        elif password is None and self.prompting:
            # remove the auth credentials from the url part
            netloc = netloc.replace('%s@' % username, '', 1)
            # prompt for the password
            prompt = 'Password for %s@%s: ' % (username, netloc)
            password = urllib.quote(getpass.getpass(prompt))
        else:
            # remove the auth credentials from the url part
            netloc = netloc.replace('%s:%s@' % (username, password), '', 1)

        target_url = urlparse.urlunsplit((scheme, netloc, path, query, frag))
        return target_url, username, password
    def extract_credentials(self, url):
        """
        Extracts user/password from a url.

        Returns a tuple:
            (url-without-auth, username, password)
        """
        if isinstance(url, urllib2.Request):
            result = urlparse.urlsplit(url.get_full_url())
        else:
            result = urlparse.urlsplit(url)
        scheme, netloc, path, query, frag = result

        username, password = self.parse_credentials(netloc)
        if username is None:
            return url, None, None
        elif password is None and self.prompting:
            # remove the auth credentials from the url part
            netloc = netloc.replace('%s@' % username, '', 1)
            # prompt for the password
            prompt = 'Password for %s@%s: ' % (username, netloc)
            password = urllib.quote(getpass.getpass(prompt))
        else:
            # remove the auth credentials from the url part
            netloc = netloc.replace('%s:%s@' % (username, password), '', 1)

        target_url = urlparse.urlunsplit((scheme, netloc, path, query, frag))
        return target_url, username, password
Exemplo n.º 3
0
 def get_url_rev(self):
     """
     Returns the correct repository URL and revision by parsing the given
     repository URL
     """
     url = self.url.split('+', 1)[1]
     scheme, netloc, path, query, frag = urlparse.urlsplit(url)
     rev = None
     if '@' in path:
         path, rev = path.rsplit('@', 1)
     url = urlparse.urlunsplit((scheme, netloc, path, query, ''))
     return url, rev
Exemplo n.º 4
0
 def get_url_rev(self):
     """
     Returns the correct repository URL and revision by parsing the given
     repository URL
     """
     error_message = ("Sorry, '%s' is a malformed VCS url. "
                      "The format is <vcs>+<protocol>://<url>, "
                      "e.g. svn+http://myrepo/svn/MyApp#egg=MyApp")
     assert '+' in self.url, error_message % self.url
     url = self.url.split('+', 1)[1]
     scheme, netloc, path, query, frag = urlparse.urlsplit(url)
     rev = None
     if '@' in path:
         path, rev = path.rsplit('@', 1)
     url = urlparse.urlunsplit((scheme, netloc, path, query, ''))
     return url, rev
Exemplo n.º 5
0
 def get_url_rev(self):
     """
     Returns the correct repository URL and revision by parsing the given
     repository URL
     """
     error_message = (
        "Sorry, '%s' is a malformed VCS url. "
        "The format is <vcs>+<protocol>://<url>, "
        "e.g. svn+http://myrepo/svn/MyApp#egg=MyApp")
     assert '+' in self.url, error_message % self.url
     url = self.url.split('+', 1)[1]
     scheme, netloc, path, query, frag = urlparse.urlsplit(url)
     rev = None
     if '@' in path:
         path, rev = path.rsplit('@', 1)
     url = urlparse.urlunsplit((scheme, netloc, path, query, ''))
     return url, rev
Exemplo n.º 6
0
 def url_without_fragment(self):
     scheme, netloc, path, query, fragment = urlparse.urlsplit(self.url)
     return urlparse.urlunsplit((scheme, netloc, path, query, None))
Exemplo n.º 7
0
 def url_without_fragment(self):
     scheme, netloc, path, query, fragment = urlparse.urlsplit(self.url)
     return urlparse.urlunsplit((scheme, netloc, path, query, None))