diff options
| author | Barry Warsaw | 2014-12-11 21:18:12 -0500 |
|---|---|---|
| committer | Barry Warsaw | 2014-12-11 21:18:12 -0500 |
| commit | fe7d286db796630b3bef326bd5106591940c0b5f (patch) | |
| tree | 4a732db60a62d222a8dd998f596789022bbc64bf /src/mailman/rest/helpers.py | |
| parent | 930a1c05b441000fbe5c3c4d8ae36d08bfe3dcdd (diff) | |
| download | mailman-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.py | 8 |
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) |
