# HG changeset patch # User Dan Villiom Podlaski Christiansen # Date 2011-04-30 17:41:25 # Node ID 0aa60e4e0b767ef112359e6ec60f16c613a40b0a # Parent e24b5e3c2f271a25c4e141f91bfbae3e4a2d7764 statichttprepo: make the opener a subclass of abstractopener diff --git a/mercurial/statichttprepo.py b/mercurial/statichttprepo.py --- a/mercurial/statichttprepo.py +++ b/mercurial/statichttprepo.py @@ -9,7 +9,7 @@ from i18n import _ import changelog, byterange, url, error -import localrepo, manifest, util, store +import localrepo, manifest, util, scmutil, store import urllib, urllib2, errno class httprangereader(object): @@ -67,17 +67,17 @@ def build_opener(ui, authinfo): urlopener = url.opener(ui, authinfo) urlopener.add_handler(byterange.HTTPRangeHandler()) - def opener(base): - """return a function that opens files over http""" - p = base - def o(path, mode="r", atomictemp=None): + class statichttpopener(scmutil.abstractopener): + def __init__(self, base): + self.base = base + + def __call__(self, path, mode="r", atomictemp=None): if mode not in ('r', 'rb'): raise IOError('Permission denied') - f = "/".join((p, urllib.quote(path))) + f = "/".join((self.base, urllib.quote(path))) return httprangereader(f, urlopener) - return o - return opener + return statichttpopener class statichttprepository(localrepo.localrepository): def __init__(self, ui, path):