summaryrefslogtreecommitdiff
path: root/paste/urlparser.py
diff options
context:
space:
mode:
authorpjenvey <devnull@localhost>2006-06-18 20:07:01 +0000
committerpjenvey <devnull@localhost>2006-06-18 20:07:01 +0000
commit899bc9ef55578437f29a2c178f2d05fe2ebb372e (patch)
tree92656e445634bbb7c696fefef98a089564b4b82c /paste/urlparser.py
parent27c03f6b97bc1c49f5739c8e9f9bb5eb9d9c415e (diff)
downloadpaste-899bc9ef55578437f29a2c178f2d05fe2ebb372e.tar.gz
Fixed urlparser classes to handle quoted (e.g. %20) URL paths.
Added tests for this (Thanks Jose Galvez)
Diffstat (limited to 'paste/urlparser.py')
-rw-r--r--paste/urlparser.py10
1 files changed, 7 insertions, 3 deletions
diff --git a/paste/urlparser.py b/paste/urlparser.py
index 829ec78..8ba52a8 100644
--- a/paste/urlparser.py
+++ b/paste/urlparser.py
@@ -7,6 +7,7 @@ WSGI applications that parse the URL and dispatch to on-disk resources
import os
import sys
import imp
+import urllib
import pkg_resources
import mimetypes
import request
@@ -192,7 +193,8 @@ class URLParser(object):
# None of the index files found
filename = None
else:
- filename = self.find_file(environ, name)
+ # Handle quoted chars (e.g. %20)
+ filename = self.find_file(environ, urllib.unquote(name))
if filename is None:
return None, filename
else:
@@ -425,7 +427,8 @@ class StaticURLParser(object):
# @@: This should obviously be configurable
filename = 'index.html'
else:
- filename = request.path_info_pop(environ)
+ # Handle quoted chars (e.g. %20)
+ filename = urllib.unquote(request.path_info_pop(environ))
full = os.path.join(self.directory, filename)
if not os.path.exists(full):
return self.not_found(environ, start_response)
@@ -510,7 +513,8 @@ class PkgResourcesParser(StaticURLParser):
# @@: This should obviously be configurable
filename = 'index.html'
else:
- filename = request.path_info_pop(environ)
+ # Handle quoted chars (e.g. %20)
+ filename = urllib.unquote(request.path_info_pop(environ))
resource = self.resource_name + '/' + filename
if not self.egg.has_resource(resource):
return self.not_found(environ, start_response)