~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Robert Collins
  • Date: 2007-04-23 02:29:35 UTC
  • mfrom: (2441 +trunk)
  • mto: This revision was merged to the branch mainline in revision 2442.
  • Revision ID: robertc@robertcollins.net-20070423022935-9hhongamvk6bfdso
Resolve conflicts with bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
import sys
28
28
 
29
29
from bzrlib import errors, ui
 
30
from bzrlib.smart import medium
30
31
from bzrlib.trace import mutter
31
32
from bzrlib.transport import (
32
 
    smart,
33
33
    Transport,
34
34
    )
35
35
 
113
113
    return m
114
114
 
115
115
 
116
 
class HttpTransportBase(Transport, smart.SmartClientMedium):
 
116
class HttpTransportBase(Transport, medium.SmartClientMedium):
117
117
    """Base class for http implementations.
118
118
 
119
119
    Does URL parsing, etc, but not any network IO.
143
143
            self._query, self._fragment) = urlparse.urlparse(self.base)
144
144
        self._qualified_proto = apparent_proto
145
145
        # range hint is handled dynamically throughout the life
146
 
        # of the object. We start by trying mulri-range requests
 
146
        # of the object. We start by trying multi-range requests
147
147
        # and if the server returns bougs results, we retry with
148
148
        # single range requests and, finally, we forget about
149
149
        # range if the server really can't understand. Once
226
226
        code, response_file = self._get(relpath, None)
227
227
        return response_file
228
228
 
229
 
    def _get(self, relpath, ranges):
 
229
    def _get(self, relpath, ranges, tail_amount=0):
230
230
        """Get a file, or part of a file.
231
231
 
232
232
        :param relpath: Path relative to transport base URL
233
 
        :param byte_range: None to get the whole file;
234
 
            or [(start,end)] to fetch parts of a file.
 
233
        :param ranges: None to get the whole file;
 
234
            or [(start,end)+], a list of tuples to fetch parts of a file.
 
235
        :param tail_amount: The amount to get from the end of the file.
235
236
 
236
237
        :returns: (http_code, result_file)
237
 
 
238
 
        Note that the current http implementations can only fetch one range at
239
 
        a time through this call.
240
238
        """
241
239
        raise NotImplementedError(self._get)
242
240
 
507
505
        return body_filelike
508
506
 
509
507
 
510
 
class SmartClientHTTPMediumRequest(smart.SmartClientMediumRequest):
 
508
class SmartClientHTTPMediumRequest(medium.SmartClientMediumRequest):
511
509
    """A SmartClientMediumRequest that works with an HTTP medium."""
512
510
 
513
 
    def __init__(self, medium):
514
 
        smart.SmartClientMediumRequest.__init__(self, medium)
 
511
    def __init__(self, client_medium):
 
512
        medium.SmartClientMediumRequest.__init__(self, client_medium)
515
513
        self._buffer = ''
516
514
 
517
515
    def _accept_bytes(self, bytes):