There's a simpler way to do it

This commit is contained in:
Neale Pickett 2019-04-11 02:41:13 +00:00
parent fec4132471
commit e4fae16023
1 changed files with 6 additions and 26 deletions

View File

@ -47,32 +47,12 @@ class MothRequestHandler(http.server.SimpleHTTPRequestHandler):
# Backport from Python 3.7 # Backport from Python 3.7
def translate_path(self, path): def translate_path(self, path):
"""Translate a /-separated PATH to the local filename syntax. # I guess we just hope that some other thread doesn't call getcwd
Components that mean special things to the local file system getcwd = os.getcwd
(e.g. drive or directory names) are ignored. (XXX They should os.getcwd = lambda: self.directory
probably be diagnosed.) ret = super().translate_path(path)
""" os.getcwd = getcwd
# abandon query parameters return ret
path = path.split('?',1)[0]
path = path.split('#',1)[0]
# Don't forget explicit trailing slash when normalizing. Issue17324
trailing_slash = path.rstrip().endswith('/')
try:
path = urllib.parse.unquote(path, errors='surrogatepass')
except UnicodeDecodeError:
path = urllib.parse.unquote(path)
path = posixpath.normpath(path)
words = path.split('/')
words = filter(None, words)
path = self.directory
for word in words:
if os.path.dirname(word) or word in (os.curdir, os.pardir):
# Ignore components that are not a simple file/directory name
continue
path = os.path.join(path, word)
if trailing_slash:
path += '/'
return path
def get_puzzle(self): def get_puzzle(self):