I'm having a nightmare with encoded/decoded uri and request_uri function:

>>> from wsgiref.util import request_uri
>>> environ = {
...     'HTTP_HOST': 'www.test.org',
...     'SCRIPT_NAME': '',
...     'PATH_INFO': '/b%40x/',
...     'wsgi.url_scheme': 'http'
...     }
>>> print request_uri(environ)
http://www.test.org/b%2540x/

Here I'm assuming that the WSGI gateway *does* not decode the uri.
The result of request_uri is incorrect, in this case.

On the other hand, if the WSGI gateway *do* decode the uri, I can no more handle '/' in uri.

I can usually avoid to have '/' in uri, but right now I'm implementing a WSGI application that implement a restfull interface to an SQL database:
http://hg.mperillo.ath.cx/wsgix/file/tip/wsgix/contrib/sqltables.py

so I can not avoid fields with '/' character in it.


The proposed solution in a previous thread
http://mail.python.org/pipermail/web-sig/2008-January/003122.html

is to implement a custom encoding scheme (like done in MoinMoin).

There are really no other good solutions?

Assuming that WSGI requires the uri to not be encoded, then the solution is to do modify the request_uri function replacing:
quote(SCRIPT_NAME) with:
quote(unquote(SCRIPT_NAME))
?


Where can I find informations about alternate encoding scheme?


Thanks  Manlio Perillo
_______________________________________________
Web-SIG mailing list
Web-SIG@python.org
Web SIG: http://www.python.org/sigs/web-sig
Unsubscribe: 
http://mail.python.org/mailman/options/web-sig/archive%40mail-archive.com

Reply via email to