Updated: (MODPYTHON-103) Implement req.add_output_filter().
Web Server forum
Back To The Forum Home!Search!Private Messaging System

Web Server Talk Web Server Talk > Web Servers reviews > Apache Server configuration support > Apache Mod-Python > Updated: (MODPYTHON-103) Implement req.add_output_filter().




  Last Thread   Next Thread Next
  Show Printable Version Email this Page Subscribe to this Thread      Post New Thread    Post A Reply      

    Updated: (MODPYTHON-103) Implement req.add_output_filter().  
Graham Dumpleton (JIRA)


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
01-08-06 01:46 AM

[ http://issues.apache.org/jira/brows...ON-103?page=all ]

Graham Dumpleton updated MODPYTHON-103:
---------------------------------------

Attachment: grahamd_20060108_1_requestobject.c.diff

Attaching file "grahamd_20060108_1_requestobject.c.diff".

This is the easy bit of the suggested changes. It allows a pre registered fi
lter to be added into either the input or output filter chain.

For example, one could do:

from mod_python import apache

def handler(req):
req.add_output_filter("CONTENT_LENGTH")
req.content_type = 'text/plain'
req.write(str(globals()),0)
req.write('\n',0)
req.write(str(locals()),0)
req.write('\n',0)
return apache.OK

Provides that no req.write() flushes the output, the "CONTENT_LENGTH" output
 filter provided by Apache will add a valid content length header to the res
ponse automatically.

Alternatively, if you have mod_deflate built into Apache, you could use:

from mod_python import apache

def handler(req):
req.add_output_filter("DEFLATE")
req.headers_in["Accept-Encoding"] = "gzip"
req.content_type = 'text/plain'
req.write(str(globals()),0)
req.write('\n',0)
req.write(str(locals()),0)
req.write('\n',0)
return apache.OK

This will have the effect or forcing the output sent to the browser to be co
mpressed, ie., response header would look like:

HTTP/1.1 200 OK
Date: Sun, 08 Jan 2006 02:04:37 GMT
Server: Apache/2.0.55 (Unix) mod_python/3.2.6-dev-20051229 Python/2.3
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 1917
Connection: close
Content-Type: text/plain

The content would be compressed accordingly. Not sure if the Vary header wou
ld be an issue in this case, but no way to tell mod_deflate not to include i
t.

Now on to the next bit, allow filters to be registered from mod_python using
 req.register_input_filter() and req.register_output_filter(). The registrat
ion only being active for the current request. :-)

> Implement req.add_output_filter().
> ----------------------------------
>
>          Key: MODPYTHON-103
>          URL: http://issues.apache.org/jira/browse/MODPYTHON-103
>      Project: mod_python
>         Type: New Feature
>   Components: core
>     Reporter: Graham Dumpleton
>      Fix For: 3.3
>  Attachments: grahamd_20060108_1_requestobject.c.diff
>
> Add new member function to request object called "add_output_filter()". This would
 be a wrapper around the function "ap_add_output_filter()" and allow previously defi
ned filters to be attached to the current request such that output can be filtered t
hro
ugh them. For example:
>   req.add_output_filter("INCLUDES")
> It would probably be necessary for any such call to be done prior to the f
irst output being generated from the request handler.
> In addition to this member function, it may be necessary to also provide a
nother member function called something like "req.add_python_output_filter()
". This would be called something like:
>   req.add_python_output_filter("module_name::filter_name",path)
> Ie., like "req.add_handler()" but no first argument for phase.
> This method would allow a specific Python filter handler function to be sp
ecified. This would be equivalent to using the PythonOutputFilter directive 
to first name a mod_python based filter handler function and then adding it 
as an output filter.
>   # Main Apache config.
>   PythonOutputFilter module_name::filter_name MYFILTER
>   # Handler code.
>   req.add_output_filter("MYFILTER")
> Note that the PythonOutputFilter directive can only be used in the main Apache con
figuration file, it cannot be used in a .htaccess file. Whether it could be made to 
work in a .htaccess file in some way needs to be investigated. In mod_perl their equ
ivl
ent seems to allow it.






[ Post a follow-up to this message ]



    Sponsored Links  




 





   All times are GMT. The time now is 09:32 PM.      Post New Thread    Post A Reply      
  Last Thread   Next Thread Next


Most Popular forums 

Forum Jump:
Rate This Thread:

Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is OFF
 
Medical and Health forum | Computer Games Reviews | Graphics design forum

Back To The Top
Home | Usercp | Faq | Register