changeset 2:bb7d50d54cb6

correct huge mistake in how i try to get the response
author k0s <k0scist@gmail.com>
date Sun, 24 Jan 2010 23:13:03 -0500
parents 2bf25337048f
children ca1f58f5bad4
files lxmlmiddleware/middleware.py setup.py
diffstat 2 files changed, 14 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/lxmlmiddleware/middleware.py	Sun Jan 24 17:37:17 2010 -0500
+++ b/lxmlmiddleware/middleware.py	Sun Jan 24 23:13:03 2010 -0500
@@ -4,6 +4,7 @@
 
 import lxml.html
 from lxml import etree
+from webob import Request, Response
 
 class LXMLMiddleware(object):
     """
@@ -20,26 +21,30 @@
         if not 'lxml.recomposer' in environ:
             environ['lxml.recomposer'] = self
 
+        request = Request(environ)
         # get the response
-        response = self.app(environ, start_response)
+        response = request.get_response(self.app)
+        response.decode_content()
 
         # get the DOM, if not already made
-        if not isinstance(response, etree._Element):
+        # TODO: check response.content_type
+        if not 'lxml.etree' in environ:
             try:
-                response = etree.fromstring(''.join(response))
+                environ['lxml.etree'] = etree.fromstring(response.body)
             except etree.XMLSyntaxError: # not XML
                 environ.pop('lxml.recomposer')
-                return response
+                return response(environ, start_response)
         
         # manipulate the DOM
-        response = self.manipulate(environ, response)
+        environ['lxml.etree'] = self.manipulate(environ, environ['lxml.etree'])
 
         # recompose the DOM if the last in the chain
         if environ['lxml.recomposer'] is self:
-            response = [ lxml.html.tostring(response) ]
+            response.body = lxml.html.tostring(environ['lxml.etree'])
 
         # return the response
-        return response
+        return response(environ, start_response)        
+
 
     def manipulate(self, environ, tree):
         """manipulate the DOM; should return an etree._Element"""
--- a/setup.py	Sun Jan 24 17:37:17 2010 -0500
+++ b/setup.py	Sun Jan 24 23:13:03 2010 -0500
@@ -1,7 +1,7 @@
 from setuptools import setup, find_packages
 import sys, os
 
-version = "0.1"
+version = "0.2"
 
 setup(name='lxmlmiddleware',
       version=version,
@@ -11,7 +11,7 @@
       classifiers=[], # Get strings from http://www.python.org/pypi?%3Aaction=list_classifiers
       author='Jeff Hammel',
       author_email='k0scist@gmail.com',
-      url='http://k0s.org',
+      url='http://k0s.org/hg/lxmlmiddleware',
       license="",
       packages=find_packages(exclude=['ez_setup', 'examples', 'tests']),
       include_package_data=True,