summaryrefslogtreecommitdiff
path: root/src/mailman/rest/helpers.py
diff options
context:
space:
mode:
authorBarry Warsaw2014-12-11 21:18:12 -0500
committerBarry Warsaw2014-12-11 21:18:12 -0500
commitfe7d286db796630b3bef326bd5106591940c0b5f (patch)
tree4a732db60a62d222a8dd998f596789022bbc64bf /src/mailman/rest/helpers.py
parent930a1c05b441000fbe5c3c4d8ae36d08bfe3dcdd (diff)
downloadmailman-fe7d286db796630b3bef326bd5106591940c0b5f.tar.gz
mailman-fe7d286db796630b3bef326bd5106591940c0b5f.tar.zst
mailman-fe7d286db796630b3bef326bd5106591940c0b5f.zip
Diffstat (limited to 'src/mailman/rest/helpers.py')
-rw-r--r--src/mailman/rest/helpers.py8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/mailman/rest/helpers.py b/src/mailman/rest/helpers.py
index 0bc312b1f..2b79a0e8a 100644
--- a/src/mailman/rest/helpers.py
+++ b/src/mailman/rest/helpers.py
@@ -59,7 +59,7 @@ def path_to(resource):
:return: The full path to the resource.
:rtype: bytes
"""
- return b'{0}://{1}:{2}/{3}/{4}'.format(
+ return '{0}://{1}:{2}/{3}/{4}'.format(
('https' if as_boolean(config.webservice.use_https) else 'http'),
config.webservice.hostname,
config.webservice.port,
@@ -107,8 +107,10 @@ def etag(resource):
assert 'http_etag' not in resource, 'Resource already etagged'
# Calculate the tag from a predictable (i.e. sorted) representation of the
# dictionary. The actual details aren't so important. pformat() is
- # guaranteed to sort the keys.
- etag = hashlib.sha1(pformat(resource)).hexdigest()
+ # guaranteed to sort the keys, however it returns a str and the hash
+ # library requires a bytes. Use the safest possible encoding.
+ hashfood = pformat(resource).encode('raw-unicode-escape')
+ etag = hashlib.sha1(hashfood).hexdigest()
resource['http_etag'] = '"{0}"'.format(etag)
return json.dumps(resource, cls=ExtendedEncoder)