author | Lee Cantey <lcantey@gmail.com> |
Wed, 08 Mar 2006 11:20:39 -0800 | |
changeset 1864 | 7a09785d3237 |
parent 1559 | 59b3639df0a9 |
child 2138 | f5046cab9e2e |
permissions | -rw-r--r-- |
372 | 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 |
||
1559
59b3639df0a9
Convert all classes to new-style classes by deriving them from object.
Eric Hopper <hopper@omnifarious.org>
parents:
372
diff
changeset
|
10 |
class httprangereader(object): |
372 | 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() |