~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: John Arbash Meinel
  • Date: 2006-07-13 18:26:21 UTC
  • mto: This revision was merged to the branch mainline in revision 1869.
  • Revision ID: john@arbash-meinel.com-20060713182621-10fc8ce282741455
Fix up the http transports so that tests pass with the new configuration.

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
 
24
24
 
25
25
from bisect import bisect
 
26
from cStringIO import StringIO
26
27
import re
27
28
 
28
29
from bzrlib import errors
224
225
    return content_type.startswith('multipart/byteranges;')
225
226
 
226
227
 
227
 
def handle_response(url, code, headers, response):
 
228
def handle_response(url, code, headers, data):
228
229
    """Interpret the code & headers and return a HTTP response.
229
230
 
230
231
    This is a factory method which returns an appropriate HTTP response
233
234
    :param url: The url being processed. Mostly for error reporting
234
235
    :param code: The integer HTTP response code
235
236
    :param headers: A dict-like object that contains the HTTP response headers
236
 
    :param response: A file-like object that can be read() to get the
237
 
                     requested data
 
237
    :param data: A file-like object that can be read() to get the
 
238
                 requested data
238
239
    :return: A file-like object that can seek()+read() the 
239
240
             ranges indicated by the headers.
240
241
    """
248
249
 
249
250
        if _is_multipart(content_type):
250
251
            # Full fledged multipart response
251
 
            return HttpMultipartRangeResponse(url, content_type, response)
 
252
            return HttpMultipartRangeResponse(url, content_type, data)
252
253
        else:
253
254
            # A response to a range request, but not multipart
254
255
            try:
256
257
            except KeyError:
257
258
                raise errors.InvalidHttpResponse(url,
258
259
                    'Missing the Content-Range header in a 206 range response')
259
 
            return HttpRangeResponse(url, content_range, response)
 
260
            return HttpRangeResponse(url, content_range, data)
260
261
    elif code == 200:
261
262
        # A regular non-range response, unfortunately the result from
262
263
        # urllib doesn't support seek, so we wrap it in a StringIO
263
 
        tell = getattr(response, 'tell', None)
 
264
        tell = getattr(data, 'tell', None)
264
265
        if tell is None:
265
 
            return StringIO(response.read())
266
 
        return response
 
266
            return StringIO(data.read())
 
267
        return data
267
268
    elif code == 404:
268
269
        raise errors.NoSuchFile(url)
269
270