~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/http/__init__.py

  • Committer: Martin Pool
  • Date: 2006-03-09 09:11:02 UTC
  • mto: This revision was merged to the branch mainline in revision 1611.
  • Revision ID: mbp@sourcefrog.net-20060309091102-dd5ab6eca97d4c08
New 'http+urllib' scheme

Move _real_abspath up to HttpTransportBase -- this just removes the
implementation qualifier from the scheme.

Show diffs side-by-side

added added

removed removed

Lines of Context:
45
45
    password manager.  Return the url, minus those auth parameters (which
46
46
    confuse urllib2).
47
47
    """
 
48
    assert re.match(r'^(https?)(\+\w+)?://', url)
48
49
    scheme, netloc, path, query, fragment = urlparse.urlsplit(url)
49
 
    assert (scheme == 'http') or (scheme == 'https')
50
50
    
51
51
    if '@' in netloc:
52
52
        auth, netloc = netloc.split('@', 1)
107
107
 
108
108
        This can be supplied with a string or a list.
109
109
 
110
 
        This always returns "http://host" without the implementation
111
 
        qualifier, even if one was originally given.
 
110
        The URL returned always has the protocol scheme originally used to 
 
111
        construct the transport, even if that includes an explicit
 
112
        implementation qualifier.
112
113
        """
113
114
        assert isinstance(relpath, basestring)
114
115
        if isinstance(relpath, basestring):
144
145
        return urlparse.urlunparse((self._qualified_proto,
145
146
                                    self._host, path, '', '', ''))
146
147
 
 
148
    def _real_abspath(self, relpath):
 
149
        """Produce absolute path, adjusting protocol if needed"""
 
150
        abspath = self.abspath(relpath)
 
151
        qp = self._qualified_proto
 
152
        rp = self._proto
 
153
        if self._qualified_proto != self._proto:
 
154
            abspath = rp + abspath[len(qp):]
 
155
        if not isinstance(abspath, str):
 
156
            # escaping must be done at a higher level
 
157
            abspath = abspath.encode('ascii')
 
158
        return abspath
 
159
 
147
160
    def get(self, relpath):
148
161
        raise NotImplementedError("has() is abstract on %r" % self)
149
162