> El 2013-09-07 20:12, Roberto De Ioris escribió:
>>> Hello,
>>>
>>> I have configured uWSGI in order to proxy to an http server and,
>>> after
>>> that, transform the response from the http server through the XSLT
>>> transformation plugin. It works. The relevant config is:
>>>
>>> route= ^/
>>> toxslt:stylesheet=/whatever/template.xslt,content_type=text/html
>>> route= ^/ proxyhttp:127.0.0.1:8002
>>>
>>> With this I am able to XSLT-transform every response from the
>>> 127.0.0.1:8002 server.
>>>
>>> The problem is that I would like to do this *only* when the response
>>> is
>>> a Content-type=text/html (whatever the URL is, i.e. it cannot be
>>> done by
>>> file extension. It must be by the Content-type header of the
>>> response)
>>>
>>> Is there a way to apply the transformation depending on the response
>>> from the server?
>>>
>>> I also considered using python code to setup the "transformation
>>> chain"
>>> on the fly as the response reaches back to the uWSGI instance, but
>>> it is
>>> poorly documented, I just don't know how to do it. Any idea?
>>>
>>> Thank you.
>>>
>>> Pablo.
>>>
>>>
>
> Thank you for your quick answer.
>
>> There is still no way to check response headers (honestly i still
>> need to
>> find a proper solution). Currently you can only check the HTTP
>> status,
>> using the error-route chain (it is a routing chain run after the
>> response
>> generation but before transformations)
>
> Is it documented? I did not see it.
>
> Anyway, that would be too expensive for this use case.
>
>> This limit is general, so even running custom code in routing handler
>> does
>> not solve the issue.
>
> Not as the most elegant and final solution, but maybe a very simple
> transformation plugin that just checks for a variable or header, and
> interrupts the transformation chain if matched...
>
> Thanks again for your help.
>
> Pablo.
> _______________________________________________
> uWSGI mailing list
> [email protected]
> http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi
>

Error router work in the same way as the others, the only difference is in
"when" they run:

https://github.com/unbit/uwsgi-docs/blob/master/Changelog-1.9.11.rst#error-routes


I have just got an idea (sleeping sometime helps ;):

response-header-collect = Content-Type MY_CONTENT_TYPE
response-header-collect = Server THE_SERVER

this will place the "tracked" headers in a request var as soon as they are
received

So you can do something like:

error-route-if = equal:${MY_CONTENT_TYPE};text/html
toxslt:stylesheet=/whatever/template.xslt,content_type=text/html

implementing it would be super-easy and there will be no need to add more
features to internal routing syntax

-- 
Roberto De Ioris
http://unbit.it
_______________________________________________
uWSGI mailing list
[email protected]
http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi

Reply via email to