[ http://issues.apache.org/jira/browse/MODPYTHON-103?page=all ]
Graham Dumpleton updated MODPYTHON-103: --------------------------------------- Attachment: grahamd_20060108_2_multiple.diff You can ignore "grahamd_20060108_1_requestobject.c.diff" now. I have superseded this with "grahamd_20060108_2_multiple.diff". This is done as a context diff as well to make it easier to see where changes need to go. This later patch includes support for dynamic registration of new Python filters from a request handler. For example: from mod_python import apache def uppercase(filter): apache.log_error("uppercase") apache.log_error(filter.name) apache.log_error(filter.handler) apache.log_error("is_input "+repr(filter.is_input)) s = filter.read() while s: filter.write(s.upper()) s = filter.read() if s is None: apache.log_error("close") filter.close() apache.log_error("end") def handler(req): req.register_output_filter("UPPERCASE","example::uppercase") req.add_input_filter("UPPERCASE") req.add_input_filter("CONTENT_LENGTH") req.content_type = 'text/plain' req.write('hello',0) return apache.OK All up this adds the following methods to the request object: register_input_filter() register_output_filter() add_input_filter() add_output_filter() The 'add' methods can be used to add to the filter stack either predefined filters, or those registered from the handler. Those registered from the handler only have a registration lifetime of that request. Multiple calls can be made to the 'add' methods to chain more than one filter. > 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, > grahamd_20060108_2_multiple.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: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira