httprangereader.py
24 lines
| 770 B
| text/x-python
|
PythonLexer
/ mercurial / httprangereader.py
mpm@selenic.com
|
r372 | # httprangereader.py - just what it says | ||
# | ||||
# Copyright 2005 Matt Mackall <mpm@selenic.com> | ||||
# | ||||
# This software may be used and distributed according to the terms | ||||
# of the GNU General Public License, incorporated herein by reference. | ||||
import byterange, urllib2 | ||||
Eric Hopper
|
r1559 | class httprangereader(object): | ||
mpm@selenic.com
|
r372 | def __init__(self, url): | ||
self.url = url | ||||
self.pos = 0 | ||||
def seek(self, pos): | ||||
self.pos = pos | ||||
def read(self, bytes=None): | ||||
opener = urllib2.build_opener(byterange.HTTPRangeHandler()) | ||||
urllib2.install_opener(opener) | ||||
req = urllib2.Request(self.url) | ||||
end = '' | ||||
if bytes: end = self.pos + bytes | ||||
req.add_header('Range', 'bytes=%d-%s' % (self.pos, end)) | ||||
f = urllib2.urlopen(req) | ||||
return f.read() | ||||