Author: damoxc

Revision: 6112

Log:
        add gzip encoding to responses that are just text

Diff:
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog     2010-01-21 21:17:18 UTC (rev 6111)
+++ trunk/ChangeLog     2010-01-22 12:39:33 UTC (rev 6112)
@@ -1,108 +1,112 @@
 === Deluge 1.3.0 (In Development) ===
 ==== Core ====
-  * Implement #1063 option to delete torrent file copy on torrent removal - 
patch from Ghent
-  * Implement #457 progress bars for folders
-  * Implement #1012 httpdownloader supports gzip decoding
-  * #496: Remove deprecated functions in favour of get_session_status()
+       * Implement #1063 option to delete torrent file copy on torrent removal 
- patch from Ghent
+       * Implement #457 progress bars for folders
+       * Implement #1012 httpdownloader supports gzip decoding
+       * #496: Remove deprecated functions in favour of get_session_status()
 
 ==== Blocklist ====
-  * Implement local blocklist support
+       * Implement local blocklist support
 
+==== Web ====
+       * Migrate to ExtJS 3.1
+       * Add gzip compression of HTTP data to the server
+
 === Deluge 1.2.0 - "Bursting like an infected kidney" (10 January 2010) ===
 ==== Core ====
-  * Implement new RPC protocol DelugeRPC replacing XMLRPC
-  * Move to a twisted framework
-  * Add an 'Error' filter for Trackers to show trackers that currently have a 
tracker error
-  * Use system GeoIP database if available, this is now an optional dependency
+       * Implement new RPC protocol DelugeRPC replacing XMLRPC
+       * Move to a twisted framework
+       * Add an 'Error' filter for Trackers to show trackers that currently 
have a tracker error
+       * Use system GeoIP database if available, this is now an optional 
dependency
 
 ==== GtkUI ====
-  * Remove SignalReceiver
-  * Implemented a cross-platform IPC method thus removing the DBUS dependency
-  * Implement a "True" Classic Mode where there is no longer a separate daemon 
process
-  * Add preferences option "Add torrent in paused state"
-  * Add tracker icons to the Tracker column
-  * Implement #259 show tooltip with country name in the peers tab
-  * Add an error category to the tracker sidebar list
-  * Add Find More Plugins button to Plugins preference page
-  * Fix #518 remove header in add torrent dialog to save vertical space
-  * Add a Cache preferences page to adjust cache settings and examine cache 
status
-  * Add ability to rename files prior to adding them
-  * Fix shutdown handler with GNOME session manager
-  * Allow 4 MiB piece sizes when creating a torrent
+       * Remove SignalReceiver
+       * Implemented a cross-platform IPC method thus removing the DBUS 
dependency
+       * Implement a "True" Classic Mode where there is no longer a separate 
daemon process
+       * Add preferences option "Add torrent in paused state"
+       * Add tracker icons to the Tracker column
+       * Implement #259 show tooltip with country name in the peers tab
+       * Add an error category to the tracker sidebar list
+       * Add Find More Plugins button to Plugins preference page
+       * Fix #518 remove header in add torrent dialog to save vertical space
+       * Add a Cache preferences page to adjust cache settings and examine 
cache status
+       * Add ability to rename files prior to adding them
+       * Fix shutdown handler with GNOME session manager
+       * Allow 4 MiB piece sizes when creating a torrent
 
 ==== ConsoleUI ====
-  * Changed to use curses for a more interactive client
+       * Changed to use curses for a more interactive client
 
 ==== WebUI ====
-  * Move over to using Twisted-Web for the webserver.
-  * Move to only AJAX interface built upon Ext-JS.
+       * Move over to using Twisted-Web for the webserver.
+       * Move to only AJAX interface built upon Ext-JS.
 
 ==== Plugins ====
-  * Add Scheduler plugin
-  * Add Extractor plugin
+       * Add Scheduler plugin
+       * Add Extractor plugin
 
 ==== Misc ====
-  * PyGTK dependency bumped to => 2.12 to use new tooltip system
-  * Add new scripts for invoking UIs: deluge-gtk, deluge-web, deluge-console
-  * Remove GeoIP database from the source tree
+       * PyGTK dependency bumped to => 2.12 to use new tooltip system
+       * Add new scripts for invoking UIs: deluge-gtk, deluge-web, 
deluge-console
+       * Remove GeoIP database from the source tree
 
 === Deluge 1.1.0 - "Time gas!" (10 January 2009) ===
 ==== Core ====
-  * Implement #79 ability to change outgoing port range
-  * Implement #296 ability to change peer TOS byte
-  * Add per-torrent move on completed settings
-  * Implement #414 use async save_resume_data method
-  * Filter Manager with torrent filtering in get_torrents_status , for sidebar 
and plugins.
-  * Implement #368 add torrents by infohash/magnet uri (trackerless torrents)
-  * Remove remaining gtk functions in common
-  * Tracker icons.
-  * Add ETA for torrents with stop at seed ratio set
-  * Fix #47 the state and config files are no longer invalidated when there is 
no diskspace
-  * Fix #619 return "" instead of "Infinity" if seconds == 0 in ftime
-  * Add -P, --pidfile option to deluged
+       * Implement #79 ability to change outgoing port range
+       * Implement #296 ability to change peer TOS byte
+       * Add per-torrent move on completed settings
+       * Implement #414 use async save_resume_data method
+       * Filter Manager with torrent filtering in get_torrents_status , for 
sidebar and plugins.
+       * Implement #368 add torrents by infohash/magnet uri (trackerless 
torrents)
+       * Remove remaining gtk functions in common
+       * Tracker icons.
+       * Add ETA for torrents with stop at seed ratio set
+       * Fix #47 the state and config files are no longer invalidated when 
there is no diskspace
+       * Fix #619 return "" instead of "Infinity" if seconds == 0 in ftime
+       * Add -P, --pidfile option to deluged
 
 ==== GtkUI ====
-  * Add peer progress to the peers tab
-  * Add ability to manually add peers
-  * Sorting # column will place downloaders above seeds
-  * Remove dependency on libtorrent for add torrent dialog
-  * Allow adding multiple trackers at once in the edit tracker dialog
-  * Implement #28 Create Torrent Dialog
-  * Redesiged sidebar with filters for Active and Tracker (see Filter Manager)
-  * Implement #428 the ability to rename files and directories
-  * Implement #229 add date added column
-  * Implement #596 show speeds in title
-  * Fix #636 not setting the daemon's config directory when using --config= 
with the UI in classic mode.
-  * Fix #624 do not allow changing file priorities when using compact 
allocation
-  * Fix #602 re-did files/peers tab state saving/loading
-  * Fix gtk warnings
-  * Add protocol traffic statusbar item
-  * Rework the Remove Torrent Dialog to only have 2 options, remove data and 
remove from session.
-  * Add "Install Plugin" and "Rescan Plugins" buttons to the Plugins 
preferences
-  * Make active port test use internal graphic instead of launching browser
+       * Add peer progress to the peers tab
+       * Add ability to manually add peers
+       * Sorting # column will place downloaders above seeds
+       * Remove dependency on libtorrent for add torrent dialog
+       * Allow adding multiple trackers at once in the edit tracker dialog
+       * Implement #28 Create Torrent Dialog
+       * Redesiged sidebar with filters for Active and Tracker (see Filter 
Manager)
+       * Implement #428 the ability to rename files and directories
+       * Implement #229 add date added column
+       * Implement #596 show speeds in title
+       * Fix #636 not setting the daemon's config directory when using 
--config= with the UI in classic mode.
+       * Fix #624 do not allow changing file priorities when using compact 
allocation
+       * Fix #602 re-did files/peers tab state saving/loading
+       * Fix gtk warnings
+       * Add protocol traffic statusbar item
+       * Rework the Remove Torrent Dialog to only have 2 options, remove data 
and remove from session.
+       * Add "Install Plugin" and "Rescan Plugins" buttons to the Plugins 
preferences
+       * Make active port test use internal graphic instead of launching 
browser
 
 ==== WebUI ====
-  * Lots of smaller tweaks.
-  * All details tabs have the same features as in gtk-ui 1.0.x
-  * Persistent sessions #486
-  * Plugin improvements for easy use of templates and images in eggs. #497
-  * Classic template takes over some style elements from white template.
-  * https (for users that know how to create certificates)
-  * Easier apache mod_proxy use.
-  * Redesigned sidebar
+       * Lots of smaller tweaks.
+       * All details tabs have the same features as in gtk-ui 1.0.x
+       * Persistent sessions #486
+       * Plugin improvements for easy use of templates and images in eggs. #497
+       * Classic template takes over some style elements from white template.
+       * https (for users that know how to create certificates)
+       * Easier apache mod_proxy use.
+       * Redesigned sidebar
 
 ==== AjaxUI ====
-  * Hosted in a webui template.
+       * Hosted in a webui template.
 
 ==== ConsoleUI ====
-  * New ConsoleUI written by Idoa01
-  * Callable from command-line for scripts.
+       * New ConsoleUI written by Idoa01
+       * Callable from command-line for scripts.
 
 ==== Plugins ====
-  * Stats plugin for graphs.
-  * Label plugin for grouping torrents and per torrent settings.
+       * Stats plugin for graphs.
+       * Label plugin for grouping torrents and per torrent settings.
 
 ==== Misc ====
-  * Implement #478 display UI options in usage help
-  * Fix #547 add description to name field per HIG entry 2.1.1.1
-  * Fix #531 set default log level to ERROR and add 2 command-line options, 
"-L, --loglevel" and "-q, --quiet".
+       * Implement #478 display UI options in usage help
+       * Fix #547 add description to name field per HIG entry 2.1.1.1
+       * Fix #531 set default log level to ERROR and add 2 command-line 
options, "-L, --loglevel" and "-q, --quiet".

Modified: trunk/deluge/ui/web/common.py
===================================================================
--- trunk/deluge/ui/web/common.py       2010-01-21 21:17:18 UTC (rev 6111)
+++ trunk/deluge/ui/web/common.py       2010-01-22 12:39:33 UTC (rev 6112)
@@ -33,6 +33,7 @@
 #
 #
 
+import zlib
 import gettext
 from mako.template import Template as MakoTemplate
 from deluge import common
@@ -50,6 +51,14 @@
     text = text.replace('\n', '\\n')
     return text
 
+def compress(contents, request):
+    request.setHeader("content-encoding", "gzip")
+    compress = zlib.compressobj(6, zlib.DEFLATED, zlib.MAX_WBITS + 16,
+        zlib.DEF_MEM_LEVEL,0)
+    contents = compress.compress(contents)
+    contents += compress.flush()
+    return contents
+
 class Template(MakoTemplate):
     """
     A template that adds some built-ins to the rendering

Modified: trunk/deluge/ui/web/json_api.py
===================================================================
--- trunk/deluge/ui/web/json_api.py     2010-01-21 21:17:18 UTC (rev 6111)
+++ trunk/deluge/ui/web/json_api.py     2010-01-22 12:39:33 UTC (rev 6112)
@@ -51,7 +51,7 @@
 from deluge.ui.client import client, Client
 from deluge.ui.coreconfig import CoreConfig
 
-from deluge.ui.web.common import _
+from deluge.ui.web.common import _, compress
 json = common.json
 
 log = logging.getLogger(__name__)
@@ -257,7 +257,7 @@
     def _send_response(self, request, response):
         response = json.dumps(response)
         request.setHeader("content-type", "application/x-json")
-        request.write(response)
+        request.write(compress(response, request))
         request.finish()
 
     def render(self, request):
@@ -490,11 +490,14 @@
 
         def got_torrents(torrents):
             ui_info["torrents"] = torrents
+            for id in torrents:
+                torrent = torrents[id]
+                torrent["id"] = id
 
         def on_complete(result):
             d.callback(ui_info)
 
-        d1 = client.core.get_torrents_status(filter_dict, keys)
+        d1 = client.core.get_torrents_status({}, keys)
         d1.addCallback(got_torrents)
 
         d2 = client.core.get_filter_tree()

Modified: trunk/deluge/ui/web/server.py
===================================================================
--- trunk/deluge/ui/web/server.py       2010-01-21 21:17:18 UTC (rev 6111)
+++ trunk/deluge/ui/web/server.py       2010-01-22 12:39:33 UTC (rev 6112)
@@ -56,7 +56,7 @@
 from deluge.ui import common as uicommon
 from deluge.ui.tracker_icons import TrackerIcons
 from deluge.ui.web.auth import Auth
-from deluge.ui.web.common import Template
+from deluge.ui.web.common import Template, compress
 from deluge.ui.web.json_api import JSON, WebApi
 from deluge.ui.web.pluginmanager import PluginManager
 log = logging.getLogger(__name__)
@@ -129,17 +129,17 @@
     def render(self, request):
         web_config = component.get("Web").get_config()
         config = dict([(key, web_config[key]) for key in UI_CONFIG_KEYS])
-        return """Deluge = {
+        return compress("""Deluge = {
     author: 'Damien Churchill <[email protected]>',
     version: '1.2-dev',
     config: %s
-}""" % common.json.dumps(config)
+}""" % common.json.dumps(config), request)
 
 class GetText(resource.Resource):
     def render(self, request):
         request.setHeader("content-type", "text/javascript; encoding=utf-8")
         template = Template(filename=rpath("gettext.js"))
-        return template.render()
+        return compress(template.render(), request)
 
 class Upload(resource.Resource):
     """
@@ -196,7 +196,7 @@
         template = Template(filename=rpath(filename))
         request.setHeader("content-type", "text/html")
         request.setResponseCode(http.OK)
-        return template.render()
+        return compress(template.render(), request)
 
 class Tracker(resource.Resource):
     tracker_icons = TrackerIcons()
@@ -285,7 +285,7 @@
                 log.debug("Serving path: '%s'", path)
                 mime_type = mimetypes.guess_type(path)
                 request.setHeader("content-type", mime_type[0])
-                return open(path, "rb").read()
+                return compress(open(path, "rb").read(), request)
 
         request.setResponseCode(http.NOT_FOUND)
         return "<h1>404 - Not Found</h1>"


-- 
You received this message because you are subscribed to the Google Groups 
"deluge-commit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/deluge-commit?hl=en.

Reply via email to