~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/__init__.py

  • Committer: Robert J. Tanner
  • Date: 2009-04-20 08:37:32 UTC
  • mfrom: (4299 +trunk)
  • mto: This revision was merged to the branch mainline in revision 4300.
  • Revision ID: tanner@real-time.com-20090420083732-bzx919oo7wpmqc2u
[merge] 1.14rc2 back into bzr.dev (Bob Tanner)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2006, 2007 Canonical Ltd
 
1
# Copyright (C) 2005, 2006, 2007, 2008 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
1334
1334
 
1335
1335
    @staticmethod
1336
1336
    def _split_url(url):
1337
 
        """
1338
 
        Extract the server address, the credentials and the path from the url.
1339
 
 
1340
 
        user, password, host and path should be quoted if they contain reserved
1341
 
        chars.
1342
 
 
1343
 
        :param url: an quoted url
1344
 
 
1345
 
        :return: (scheme, user, password, host, port, path) tuple, all fields
1346
 
            are unquoted.
1347
 
        """
1348
 
        if isinstance(url, unicode):
1349
 
            raise errors.InvalidURL('should be ascii:\n%r' % url)
1350
 
        url = url.encode('utf-8')
1351
 
        (scheme, netloc, path, params,
1352
 
         query, fragment) = urlparse.urlparse(url, allow_fragments=False)
1353
 
        user = password = host = port = None
1354
 
        if '@' in netloc:
1355
 
            user, host = netloc.rsplit('@', 1)
1356
 
            if ':' in user:
1357
 
                user, password = user.split(':', 1)
1358
 
                password = urllib.unquote(password)
1359
 
            user = urllib.unquote(user)
1360
 
        else:
1361
 
            host = netloc
1362
 
 
1363
 
        if ':' in host:
1364
 
            host, port = host.rsplit(':', 1)
1365
 
            try:
1366
 
                port = int(port)
1367
 
            except ValueError:
1368
 
                raise errors.InvalidURL('invalid port number %s in url:\n%s' %
1369
 
                                        (port, url))
1370
 
        if host == '':
1371
 
            raise errors.InvalidURL('Host empty in: %s' % url)
1372
 
 
1373
 
        host = urllib.unquote(host)
1374
 
        path = urllib.unquote(path)
1375
 
 
1376
 
        return (scheme, user, password, host, port, path)
 
1337
        return urlutils.parse_url(url)
1377
1338
 
1378
1339
    @staticmethod
1379
1340
    def _unsplit_url(scheme, user, password, host, port, path):