~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/http.py

  • Committer: Robert Collins
  • Date: 2005-10-16 14:19:24 UTC
  • mto: This revision was merged to the branch mainline in revision 1459.
  • Revision ID: robertc@lifelesslap.robertcollins.net-20051016141924-8dcbb20f1c03756e
Many transport related tweaks:

- Remove get_partial as it was not used at all.
- Move store._iter_relpaths into transport as iter_files_recursive.
- Nuke ImmutableMemoryStore, replaced with MemoryTransport.
- Remove all direct use of the stat module from store logic.

Show diffs side-by-side

added added

removed removed

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