# HG changeset patch # User souliane # Date 1411133952 -7200 # Node ID 8492c2bb463b7e633316b02d6b9dd7a27e89e698 # Parent 50ebe9b8129f28c83494c4570702aaed2a2cad02 server_side: enable HTTP gzip compression diff -r 50ebe9b8129f -r 8492c2bb463b src/server/server.py --- a/src/server/server.py Thu Sep 18 11:47:49 2014 +0200 +++ b/src/server/server.py Fri Sep 19 15:39:12 2014 +0200 @@ -21,7 +21,7 @@ from twisted.internet import reactor, defer from twisted.web import server from twisted.web.static import File -from twisted.web.resource import Resource, NoResource +from twisted.web.resource import Resource, NoResource, EncodingResourceWrapper from twisted.web.util import Redirect, redirectTo from twisted.python.components import registerAdapter from twisted.python.failure import Failure @@ -1056,18 +1056,24 @@ self.bridge.register(signal_name, self.signal_handler.getGenericCb(signal_name), "plugin") self.media_dir = self.bridge.getConfig('', 'media_dir') self.local_dir = self.bridge.getConfig('', 'local_dir') - root.putChild('', Redirect('libervia.html')) - root.putChild('json_signal_api', self.signal_handler) - root.putChild('json_api', MethodHandler(self)) - root.putChild('register_api', _register) - root.putChild('upload_radiocol', _upload_radiocol) - root.putChild('upload_avatar', _upload_avatar) - root.putChild('blog', MicroBlog(self)) - root.putChild('css', ProtectedFile(self.server_css_dir)) - root.putChild(os.path.dirname(C.MEDIA_DIR), ProtectedFile(self.media_dir)) - root.putChild(os.path.dirname(C.AVATARS_DIR), ProtectedFile(os.path.join(self.local_dir, C.AVATARS_DIR))) - root.putChild('radiocol', ProtectedFile(_upload_radiocol.getTmpDir(), defaultType="audio/ogg")) # We cheat for PoC because we know we are on the same host, so we use directly upload dir - self.site = server.Site(root) + + def putChild(path, resource): + """Add a child to the root resource""" + root.putChild(path, EncodingResourceWrapper(resource, [server.GzipEncoderFactory()])) + + putChild('', Redirect('libervia.html')) + putChild('json_signal_api', self.signal_handler) + putChild('json_api', MethodHandler(self)) + putChild('register_api', _register) + putChild('upload_radiocol', _upload_radiocol) + putChild('upload_avatar', _upload_avatar) + putChild('blog', MicroBlog(self)) + putChild('css', ProtectedFile(self.server_css_dir)) + putChild(os.path.dirname(C.MEDIA_DIR), ProtectedFile(self.media_dir)) + putChild(os.path.dirname(C.AVATARS_DIR), ProtectedFile(os.path.join(self.local_dir, C.AVATARS_DIR))) + putChild('radiocol', ProtectedFile(_upload_radiocol.getTmpDir(), defaultType="audio/ogg")) # We cheat for PoC because we know we are on the same host, so we use directly upload dir + wrapped = EncodingResourceWrapper(root, [server.GzipEncoderFactory()]) + self.site = server.Site(wrapped) self.site.sessionFactory = LiberviaSession self.bridge.getReady(lambda: self.initialised.callback(None),