[ http://issues.apache.org/jira/browse/MODPYTHON-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 
filter 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.content_type = 'text/plain'
    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 
response automatically.

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

  from mod_python import apache

  def handler(req):
    req.headers_in["Accept-Encoding"] = "gzip"
    req.content_type = 'text/plain'
    return apache.OK

This will have the effect or forcing the output sent to the browser to be 
compressed, 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 would 
be an issue in this case, but no way to tell mod_deflate not to include it.

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 registration 
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 defined filters to be attached to the current request such that 
> output can be filtered through them. For example:
>   req.add_output_filter("INCLUDES")
> It would probably be necessary for any such call to be done prior to the 
> first output being generated from the request handler.
> In addition to this member function, it may be necessary to also provide 
> another 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 
> specified. 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 configuration 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 equivlent seems to allow it.

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
For more information on JIRA, see:

Reply via email to