mercurial/hgweb/protocol.py
changeset 11625 cdeb861335d5
parent 11623 31d0a6d50ee2
child 11626 2f8adc60e013
equal deleted inserted replaced
11624:67260651d09d 11625:cdeb861335d5
    46     def sendresponse(self, s):
    46     def sendresponse(self, s):
    47         self.req.respond(HTTP_OK, HGTYPE, length=len(s))
    47         self.req.respond(HTTP_OK, HGTYPE, length=len(s))
    48         self.response = s
    48         self.response = s
    49     def sendstream(self, source):
    49     def sendstream(self, source):
    50         self.req.respond(HTTP_OK, HGTYPE)
    50         self.req.respond(HTTP_OK, HGTYPE)
    51         for chunk in source:
    51         for chunk in source.gen:
    52             self.req.write(str(chunk))
    52             self.req.write(chunk)
    53     def sendpushresponse(self, ret):
    53     def sendpushresponse(self, rsp):
    54         val = sys.stdout.getvalue()
    54         val = sys.stdout.getvalue()
    55         sys.stdout, sys.stderr = self.oldio
    55         sys.stdout, sys.stderr = self.oldio
    56         self.req.respond(HTTP_OK, HGTYPE)
    56         self.req.respond(HTTP_OK, HGTYPE)
    57         self.response = '%d\n%s' % (ret, val)
    57         self.response = '%d\n%s' % (rsp.res, val)
       
    58 
       
    59     handlers = {
       
    60         str: sendresponse,
       
    61         wireproto.streamres: sendstream,
       
    62         wireproto.pushres: sendpushresponse,
       
    63     }
       
    64 
    58     def _client(self):
    65     def _client(self):
    59         return 'remote:%s:%s:%s' % (
    66         return 'remote:%s:%s:%s' % (
    60             self.req.env.get('wsgi.url_scheme') or 'http',
    67             self.req.env.get('wsgi.url_scheme') or 'http',
    61             urllib.quote(self.req.env.get('REMOTE_HOST', '')),
    68             urllib.quote(self.req.env.get('REMOTE_HOST', '')),
    62             urllib.quote(self.req.env.get('REMOTE_USER', '')))
    69             urllib.quote(self.req.env.get('REMOTE_USER', '')))
    64 def iscmd(cmd):
    71 def iscmd(cmd):
    65     return cmd in wireproto.commands
    72     return cmd in wireproto.commands
    66 
    73 
    67 def call(repo, req, cmd):
    74 def call(repo, req, cmd):
    68     p = webproto(req)
    75     p = webproto(req)
    69     wireproto.dispatch(repo, p, cmd)
    76     rsp = wireproto.dispatch(repo, p, cmd)
    70     yield p.response
    77     webproto.handlers[rsp.__class__](p, rsp)
       
    78     return [p.response]