mercurial/httprangereader.py
changeset 372 4b0f562c61f4
child 1559 59b3639df0a9
equal deleted inserted replaced
371:6e3436082697 372:4b0f562c61f4
       
     1 # httprangereader.py - just what it says
       
     2 #
       
     3 # Copyright 2005 Matt Mackall <mpm@selenic.com>
       
     4 #
       
     5 # This software may be used and distributed according to the terms
       
     6 # of the GNU General Public License, incorporated herein by reference.
       
     7 
       
     8 import byterange, urllib2
       
     9 
       
    10 class httprangereader:
       
    11     def __init__(self, url):
       
    12         self.url = url
       
    13         self.pos = 0
       
    14     def seek(self, pos):
       
    15         self.pos = pos
       
    16     def read(self, bytes=None):
       
    17         opener = urllib2.build_opener(byterange.HTTPRangeHandler())
       
    18         urllib2.install_opener(opener)
       
    19         req = urllib2.Request(self.url)
       
    20         end = ''
       
    21         if bytes: end = self.pos + bytes
       
    22         req.add_header('Range', 'bytes=%d-%s' % (self.pos, end))
       
    23         f = urllib2.urlopen(req)
       
    24         return f.read()