~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/__init__.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2006-05-22 14:53:12 UTC
  • mfrom: (1707.3.30 ftp-server)
  • Revision ID: pqm@pqm.ubuntu.com-20060522145312-94c3c934d7cbd9ff
(jam) use medusa as an ftp-server provider, fix FtpTransport

Show diffs side-by-side

added added

removed removed

Lines of Context:
126
126
        urlparse.uses_netloc.append(protocol)
127
127
 
128
128
 
 
129
def split_url(url):
 
130
    if isinstance(url, unicode):
 
131
        url = url.encode('utf-8')
 
132
    (scheme, netloc, path, params,
 
133
     query, fragment) = urlparse.urlparse(url, allow_fragments=False)
 
134
    username = password = host = port = None
 
135
    if '@' in netloc:
 
136
        username, host = netloc.split('@', 1)
 
137
        if ':' in username:
 
138
            username, password = username.split(':', 1)
 
139
            password = urllib.unquote(password)
 
140
        username = urllib.unquote(username)
 
141
    else:
 
142
        host = netloc
 
143
 
 
144
    if ':' in host:
 
145
        host, port = host.rsplit(':', 1)
 
146
        try:
 
147
            port = int(port)
 
148
        except ValueError:
 
149
            # TODO: Should this be ConnectionError?
 
150
            raise errors.TransportError('%s: invalid port number' % port)
 
151
    host = urllib.unquote(host)
 
152
 
 
153
    path = urllib.unquote(path)
 
154
 
 
155
    return (scheme, username, password, host, port, path)
 
156
 
 
157
 
129
158
class Transport(object):
130
159
    """This class encapsulates methods for retrieving or putting a file
131
160
    from/to a storage location.