unquote key name multiple times until stable value
This commit is contained in:
parent
86fc340ffd
commit
2df0309db5
3 changed files with 66 additions and 5 deletions
|
|
@ -68,11 +68,22 @@ def metadata_from_headers(headers):
|
|||
return metadata
|
||||
|
||||
|
||||
def clean_key_name(key_name):
|
||||
def clean_key_name(key_name, attempts=4):
|
||||
if six.PY2:
|
||||
return unquote(key_name.encode('utf-8')).decode('utf-8')
|
||||
def uq(k):
|
||||
return unquote(k.encode('utf-8')).decode('utf-8')
|
||||
else:
|
||||
uq = unquote
|
||||
|
||||
return unquote(key_name)
|
||||
original = cleaned = key_name
|
||||
last_attempt = attempts - 1
|
||||
for attempt in range(attempts):
|
||||
cleaned = uq(key_name)
|
||||
if cleaned == key_name:
|
||||
return cleaned
|
||||
if attempt != last_attempt:
|
||||
key_name = cleaned
|
||||
raise Exception('unable to fully clean name: original %s, last clean %s prior clean %s' % (original, cleaned, key_name))
|
||||
|
||||
|
||||
class _VersionedKeyStore(dict):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue