~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/http.py

[merge] from robert and fix up tests

Show diffs side-by-side

added added

removed removed

Lines of Context:
107
107
        return urlparse.urlunparse((self._proto,
108
108
                self._host, path, '', '', ''))
109
109
 
110
 
    def relpath(self, abspath):
111
 
        if not abspath.startswith(self.base):
112
 
            raise NonRelativePath('path %r is not under base URL %r'
113
 
                           % (abspath, self.base))
114
 
        pl = len(self.base)
115
 
        return abspath[pl:].lstrip('/')
116
 
 
117
110
    def has(self, relpath):
118
111
        """Does the target location exist?
119
112
 
153
146
                             % (self.abspath(relpath), str(e)),
154
147
                             orig_error=e)
155
148
 
156
 
    def get_partial(self, relpath, start, length=None):
157
 
        """Get just part of a file.
158
 
 
159
 
        :param relpath: Path to the file, relative to base
160
 
        :param start: The starting position to read from
161
 
        :param length: The length to read. A length of None indicates
162
 
                       read to the end of the file.
163
 
        :return: A file-like object containing at least the specified bytes.
164
 
                 Some implementations may return objects which can be read
165
 
                 past this length, but this is not guaranteed.
166
 
        """
167
 
        # TODO: You can make specialized http requests for just
168
 
        # a portion of the file. Figure out how to do that.
169
 
        # For now, urllib2 returns files that cannot seek() so
170
 
        # we just read bytes off the beginning, until we
171
 
        # get to the point that we care about.
172
 
        f = self.get(relpath)
173
 
        # TODO: read in smaller chunks, in case things are
174
 
        # buffered internally.
175
 
        f.read(start)
176
 
        return f
177
 
 
178
149
    def put(self, relpath, f):
179
150
        """Copy the file-like or string object into the location.
180
151