/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/transport/http/wsgi.py

  • Committer: John Arbash Meinel
  • Date: 2008-10-08 21:56:12 UTC
  • mto: This revision was merged to the branch mainline in revision 3773.
  • Revision ID: john@arbash-meinel.com-20081008215612-y9v94tqxreqoangx
Simplify the --raw mode.

I didn't realize, but the only node that is special cased is the 'root' node,
and to read it, you actually have to parse it directly, because the
compressed bytes start immediately after the end of the header, rather than
having any padding before the zlib bytes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006-2010 Canonical Ltd
 
1
# Copyright (C) 2006 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
"""WSGI application for bzr HTTP smart server.
18
18
 
25
25
from bzrlib.smart import protocol, medium
26
26
from bzrlib.transport import chroot, get_transport
27
27
from bzrlib.urlutils import local_path_to_url
28
 
 
 
28
    
29
29
 
30
30
def make_app(root, prefix, path_var='REQUEST_URI', readonly=True,
31
31
    load_plugins=True, enable_logging=True):
32
32
    """Convenience function to construct a WSGI bzr smart server.
33
 
 
 
33
    
34
34
    :param root: a local path that requests will be relative to.
35
35
    :param prefix: See RelpathSetter.
36
36
    :param path_var: See RelpathSetter.
53
53
 
54
54
class RelpathSetter(object):
55
55
    """WSGI middleware to set 'bzrlib.relpath' in the environ.
56
 
 
 
56
    
57
57
    Different servers can invoke a SmartWSGIApp in different ways.  This
58
58
    middleware allows an adminstrator to configure how to the SmartWSGIApp will
59
59
    determine what path it should be serving for a given request for many common
65
65
    prefix="/some/prefix/" and path_var="REQUEST_URI" will set that request's
66
66
    'bzrlib.relpath' variable to "repo/branch".
67
67
    """
68
 
 
 
68
    
69
69
    def __init__(self, app, prefix='', path_var='REQUEST_URI'):
70
70
        """Constructor.
71
71
 
106
106
        # e.g. consider a smart server request for "get /etc/passwd" or
107
107
        # something.
108
108
        self.chroot_server = chroot.ChrootServer(backing_transport)
109
 
        self.chroot_server.start_server()
 
109
        self.chroot_server.setUp()
110
110
        self.backing_transport = get_transport(self.chroot_server.get_url())
111
111
        self.root_client_path = root_client_path
112
112
        # While the chroot server can technically be torn down at this point,
113
 
        # as all it does is remove the scheme registration from transport's
114
 
        # protocol dictionary, we don't *just in case* there are parts of
 
113
        # as all it does is remove the scheme registration from transport's 
 
114
        # protocol dictionary, we don't *just in case* there are parts of 
115
115
        # bzrlib that will invoke 'get_transport' on urls rather than cloning
116
116
        # around the existing transport.
117
 
        #self.chroot_server.stop_server()
 
117
        #self.chroot_server.tearDown()
118
118
 
119
119
    def __call__(self, environ, start_response):
120
120
        """WSGI application callable."""
176
176
    def make_request(self, transport, write_func, request_bytes, rcp):
177
177
        protocol_factory, unused_bytes = medium._get_protocol_factory_for_bytes(
178
178
            request_bytes)
179
 
        server_protocol = protocol_factory(
180
 
            transport, write_func, rcp, self.backing_transport)
 
179
        server_protocol = protocol_factory(transport, write_func, rcp)
181
180
        server_protocol.accept_bytes(unused_bytes)
182
181
        return server_protocol