From 51f8743f76396a559ab3c06e4124e31dac4b8878 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Fri, 16 Mar 2012 17:13:35 +0100 Subject: hg: hgwebfs extension, ignore /net.alt --- sys/lib/python/hgext/hgwebfs.py | 74 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 sys/lib/python/hgext/hgwebfs.py (limited to 'sys/lib/python') diff --git a/sys/lib/python/hgext/hgwebfs.py b/sys/lib/python/hgext/hgwebfs.py new file mode 100644 index 000000000..ab6d95319 --- /dev/null +++ b/sys/lib/python/hgext/hgwebfs.py @@ -0,0 +1,74 @@ +''' webfs support ''' + +import mercurial.url +import re + +class Webconn: + def __init__(self, mnt, req): + ctl = open(mnt+'/clone', 'r+', 0) + try: + self.url = req.get_full_url() + self.dir = mnt+'/'+ctl.readline().rstrip('\n') + ctl.seek(0) + ctl.write('url '+self.url) + m = '' + for h,v in req.headers: + m += h+': '+v+'\r\n' + if len(m) > 0: + m = 'headers '+m + print m + ctl.seek(0) + ctl.write(m) + if req.has_data(): + data = req.get_data() + post = open(self.dir+'/postdata', 'w', 0); + try: + while True: + buf = data.read(4096) + if len(buf) == 0: + break + post.write(buf) + finally: + post.close() + self.body = open(self.dir+'/body', 'r', 0) + finally: + ctl.close() + + def read(self, amt=4096): + return self.body.read(amt); + + def close(self): + self.body.close() + self.body = None + self.dir = None + + def geturl(self): + return self.url + + def getheader(self, key): + name = re.sub(r'[^a-z]+', '', key.lower()) + try: + f = open(self.dir+'/'+name, 'r', 0) + try: + hdr = f.read() + finally: + f.close() + return hdr + except: + return None + +class Webopener: + def __init__(self): + self.handlers = [] + + def open(self, req, data=None): + return Webconn('/mnt/web', req) + + def close(self): + pass + + +def webopener(ui, authinfo=None): + return Webopener(); + +mercurial.url.opener = webopener -- cgit v1.2.3